Skip to content

Commit 5f0643b

Browse files
authored
Make _emscripten_run_callback_on_thread asynchronous (#22443)
Fixes a regression introduced in c41f659 "Remove use of legacy proxy API from library_html5.js. NFC (#20370)". Fixes: #22442
1 parent 010e57f commit 5f0643b

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

system/lib/html5/callback.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ typedef struct callback_args_t {
2121
static void do_callback(void* arg) {
2222
callback_args_t* args = (callback_args_t*)arg;
2323
args->callback(args->event_type, args->event_data, args->user_data);
24+
free(arg);
2425
}
2526

2627
void _emscripten_run_callback_on_thread(pthread_t t,
@@ -29,14 +30,13 @@ void _emscripten_run_callback_on_thread(pthread_t t,
2930
void* event_data,
3031
void* user_data) {
3132
em_proxying_queue* q = emscripten_proxy_get_system_queue();
32-
callback_args_t arg = {
33-
.callback = f,
34-
.event_type = event_type,
35-
.event_data = event_data,
36-
.user_data = user_data,
37-
};
33+
callback_args_t* arg = malloc(sizeof(callback_args_t));
34+
arg->callback = f;
35+
arg->event_type = event_type;
36+
arg->event_data = event_data;
37+
arg->user_data = user_data;
3838

39-
if (!emscripten_proxy_sync(q, t, do_callback, &arg)) {
40-
assert(false && "emscripten_proxy_sync failed");
39+
if (!emscripten_proxy_async(q, t, do_callback, arg)) {
40+
assert(false && "emscripten_proxy_async failed");
4141
}
4242
}

0 commit comments

Comments
 (0)