@@ -21,6 +21,7 @@ typedef struct callback_args_t {
2121static 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
2627void _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