aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2022-11-05 14:00:59 +0100
committerAndre Weissflog <floooh@gmail.com>2022-11-05 14:00:59 +0100
commit52549e62b2fef22183e6671ccdbae63498018783 (patch)
tree22483fdfd7b1df26cd63664054e6cafa662c8b6c
parent4c1201964df8c5656ba45355530413e2303cbbe7 (diff)
sokol_app.h html5: use sapp_range instead of ptr/size pairs in sapp_html5_fetch_request/response
-rw-r--r--sokol_app.h51
1 files changed, 26 insertions, 25 deletions
diff --git a/sokol_app.h b/sokol_app.h
index 45acba81..b53dedc0 100644
--- a/sokol_app.h
+++ b/sokol_app.h
@@ -633,8 +633,10 @@
sapp_html5_fetch_dropped_file(&(sapp_html5_fetch_request){
.dropped_file_index = 0,
.callback = fetch_cb
- .buffer_ptr = buf,
- .buffer_size = buf_size,
+ .buffer = {
+ .ptr = buf,
+ .size = sizeof(buf)
+ },
.user_data = ...
});
@@ -648,9 +650,9 @@
// IMPORTANT: check if the loading operation actually succeeded:
if (response->succeeded) {
// the size of the loaded file:
- const uint32_t num_bytes = response->fetched_size;
+ const size_t num_bytes = response->data.size;
// and the pointer to the data (same as 'buf' in the fetch-call):
- const void* ptr = response->buffer_ptr;
+ const void* ptr = response->data.ptr;
}
else {
// on error check the error code:
@@ -1531,21 +1533,19 @@ typedef enum sapp_html5_fetch_error {
} sapp_html5_fetch_error;
typedef struct sapp_html5_fetch_response {
- bool succeeded; /* true if the loading operation has succeeded */
+ bool succeeded; // true if the loading operation has succeeded
sapp_html5_fetch_error error_code;
- int file_index; /* index of the dropped file (0..sapp_get_num_dropped_filed()-1) */
- uint32_t fetched_size; /* size in bytes of loaded data */
- void* buffer_ptr; /* pointer to user-provided buffer which contains the loaded data */
- uint32_t buffer_size; /* size of user-provided buffer (buffer_size >= fetched_size) */
- void* user_data; /* user-provided user data pointer */
+ int file_index; // index of the dropped file (0..sapp_get_num_dropped_filed()-1)
+ sapp_range data; // pointer and size of the fetched data (data.ptr == buffer.ptr, data.size <= buffer.size)
+ sapp_range buffer; // the user-provided buffer ptr/size pair (buffer.ptr == data.ptr, buffer.size >= data.size)
+ void* user_data; // user-provided user data pointer
} sapp_html5_fetch_response;
typedef struct sapp_html5_fetch_request {
- int dropped_file_index; /* 0..sapp_get_num_dropped_files()-1 */
- void (*callback)(const sapp_html5_fetch_response*); /* response callback function pointer (required) */
- void* buffer_ptr; /* pointer to buffer to load data into */
- uint32_t buffer_size; /* size in bytes of buffer */
- void* user_data; /* optional userdata pointer */
+ int dropped_file_index; // 0..sapp_get_num_dropped_files()-1
+ void (*callback)(const sapp_html5_fetch_response*); // response callback function pointer (required)
+ sapp_range buffer; // ptr/size of a memory buffer to load the data into
+ void* user_data; // optional userdata pointer
} sapp_html5_fetch_request;
/*
@@ -4574,9 +4574,10 @@ EMSCRIPTEN_KEEPALIVE void _sapp_emsc_invoke_fetch_cb(int index, int success, int
response.succeeded = (0 != success);
response.error_code = (sapp_html5_fetch_error) error_code;
response.file_index = index;
- response.fetched_size = fetched_size;
- response.buffer_ptr = buf_ptr;
- response.buffer_size = buf_size;
+ response.data.ptr = buf_ptr;
+ response.data.size = fetched_size;
+ response.buffer.ptr = buf_ptr;
+ response.buffer.size = buf_size;
response.user_data = user_data;
callback(&response);
}
@@ -12159,15 +12160,15 @@ SOKOL_API_IMPL void sapp_html5_fetch_dropped_file(const sapp_html5_fetch_request
SOKOL_ASSERT(_sapp.drop.enabled);
SOKOL_ASSERT(request);
SOKOL_ASSERT(request->callback);
- SOKOL_ASSERT(request->buffer_ptr);
- SOKOL_ASSERT(request->buffer_size > 0);
+ SOKOL_ASSERT(request->buffer.ptr);
+ SOKOL_ASSERT(request->buffer.size > 0);
#if defined(_SAPP_EMSCRIPTEN)
const int index = request->dropped_file_index;
sapp_html5_fetch_error error_code = SAPP_HTML5_FETCH_ERROR_NO_ERROR;
if ((index < 0) || (index >= _sapp.drop.num_files)) {
error_code = SAPP_HTML5_FETCH_ERROR_OTHER;
}
- if (sapp_html5_get_dropped_file_size(index) > request->buffer_size) {
+ if (sapp_html5_get_dropped_file_size(index) > request->buffer.size) {
error_code = SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL;
}
if (SAPP_HTML5_FETCH_ERROR_NO_ERROR != error_code) {
@@ -12176,15 +12177,15 @@ SOKOL_API_IMPL void sapp_html5_fetch_dropped_file(const sapp_html5_fetch_request
(int)error_code,
request->callback,
0, // fetched_size
- request->buffer_ptr,
- request->buffer_size,
+ (void*)request->buffer.ptr,
+ request->buffer.size,
request->user_data);
}
else {
sapp_js_fetch_dropped_file(index,
request->callback,
- request->buffer_ptr,
- request->buffer_size,
+ (void*)request->buffer.ptr,
+ request->buffer.size,
request->user_data);
}
#else