Buckets:
| /* | |
| * Copyright 2023 The Emscripten Authors. All rights reserved. | |
| * Emscripten is available under two separate licenses, the MIT license and the | |
| * University of Illinois/NCSA Open Source License. Both these licenses can be | |
| * found in the LICENSE file. | |
| */ | |
| typedef bool (*event_callback)(int event_type, void * _Nonnull event_data, void *user_data); | |
| typedef struct callback_args_t { | |
| event_callback callback; | |
| int event_type; | |
| void *user_data; | |
| uint8_t event_data[]; | |
| } callback_args_t; | |
| static void do_callback(void* arg) { | |
| callback_args_t* args = (callback_args_t*)arg; | |
| args->callback(args->event_type, args->event_data, args->user_data); | |
| free(arg); | |
| } | |
| void _emscripten_run_callback_on_thread(pthread_t t, | |
| event_callback f, | |
| int event_type, | |
| void* event_data, | |
| size_t event_data_size, | |
| void* user_data) { | |
| em_proxying_queue* q = emscripten_proxy_get_system_queue(); | |
| callback_args_t* arg = malloc(sizeof(callback_args_t) + event_data_size); | |
| arg->callback = f; | |
| arg->event_type = event_type; | |
| arg->user_data = user_data; | |
| memcpy(arg->event_data, event_data, event_data_size); | |
| if (!emscripten_proxy_async(q, t, do_callback, arg)) { | |
| assert(false && "emscripten_proxy_async failed"); | |
| } | |
| } | |
| static EMSCRIPTEN_RESULT _get_last_event(void* out, void *latest, size_t len) { | |
| if (!latest) { | |
| return EMSCRIPTEN_RESULT_NO_DATA; | |
| } | |
| memcpy(out, latest, len); | |
| return EMSCRIPTEN_RESULT_SUCCESS; | |
| } | |
| EMSCRIPTEN_RESULT emscripten_get_deviceorientation_status(EmscriptenDeviceOrientationEvent *out) { | |
| return _get_last_event(out, _emscripten_get_last_deviceorientation_event(), sizeof(*out)); | |
| } | |
| EMSCRIPTEN_RESULT emscripten_get_devicemotion_status(EmscriptenDeviceMotionEvent *out) { | |
| return _get_last_event(out, _emscripten_get_last_devicemotion_event(), sizeof(*out)); | |
| } | |
| EMSCRIPTEN_RESULT emscripten_get_mouse_status(EmscriptenMouseEvent *out) { | |
| return _get_last_event(out, _emscripten_get_last_mouse_event(), sizeof(*out)); | |
| } | |
Xet Storage Details
- Size:
- 2.26 kB
- Xet hash:
- 7bebdcc6a305e8974333c8f03a523b10c9d92cb69cc915c95fc486c5e07934c0
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.