@@ -149,15 +149,15 @@ static void audioworklet_thread_inited_cb(EMSCRIPTEN_WEBAUDIO_T context, bool su
149149 audioworklet_data_t * audioworklet = (audioworklet_data_t * )data ;
150150 WebAudioWorkletProcessorCreateOptions opts = { "retroarch" , 0 };
151151
152- if (!success )
152+ if (success )
153+ emscripten_create_wasm_audio_worklet_processor_async (context , & opts ,
154+ audioworklet_processor_inited_cb , audioworklet );
155+ else
153156 {
154157 RARCH_ERR ("[AudioWorklet] Failed to init worklet thread! Is the worklet file in the right place?\n" );
155158 audioworklet -> init_error = true;
156159 audioworklet -> init_done = true;
157- return ;
158160 }
159-
160- emscripten_create_wasm_audio_worklet_processor_async (context , & opts , audioworklet_processor_inited_cb , audioworklet );
161161}
162162
163163static void audioworklet_ctx_statechange_cb (void * data , bool state )
@@ -190,9 +190,9 @@ static void audioworklet_ctx_create(void *data)
190190
191191static void audioworklet_alloc_buffer (void * data )
192192{
193+ size_t buffer_size ;
193194 audioworklet_data_t * audioworklet = (audioworklet_data_t * )data ;
194195
195- size_t buffer_size ;
196196 audioworklet -> visible_buffer_size = (audioworklet -> latency * audioworklet -> rate * 2 * sizeof (float )) / 1000 ;
197197 buffer_size = audioworklet -> visible_buffer_size ;
198198#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
@@ -239,9 +239,9 @@ static void *audioworklet_init(const char *device, unsigned rate,
239239 return NULL ;
240240 }
241241 RARCH_LOG ("[AudioWorklet] Reusing old context.\n" );
242- audioworklet = audioworklet_static_data ;
242+ audioworklet = audioworklet_static_data ;
243243 audioworklet -> latency = latency ;
244- * new_rate = audioworklet -> rate ;
244+ * new_rate = audioworklet -> rate ;
245245 RARCH_LOG ("[AudioWorklet] Device rate: %d Hz.\n" , * new_rate );
246246 audioworklet_alloc_buffer (audioworklet );
247247 audioworklet_resume_ctx (audioworklet );
@@ -259,7 +259,7 @@ static void *audioworklet_init(const char *device, unsigned rate,
259259
260260 audioworklet -> latency = latency ;
261261 platform_emscripten_run_on_browser_thread_sync (audioworklet_ctx_create , audioworklet );
262- * new_rate = audioworklet -> rate ;
262+ * new_rate = audioworklet -> rate ;
263263 RARCH_LOG ("[AudioWorklet] Device rate: %d Hz.\n" , * new_rate );
264264 audioworklet -> initing = true;
265265 audioworklet_alloc_buffer (audioworklet );
@@ -295,10 +295,10 @@ static ssize_t audioworklet_write(void *data, const void *s, size_t ss)
295295 size_t max_write ;
296296 size_t to_write_frames ;
297297 size_t to_write_bytes ;
298- size_t _len = 0 ;
298+ size_t _len = 0 ;
299299 audioworklet_data_t * audioworklet = (audioworklet_data_t * )data ;
300300 const float * samples = (const float * )s ;
301- size_t num_frames = ss / 2 / sizeof (float );
301+ size_t num_frames = ss / 2 / sizeof (float );
302302
303303 /* too early! might happen with external blocking */
304304 if (!audioworklet -> driver_running )
@@ -382,51 +382,51 @@ bool audioworklet_external_block(void)
382382{
383383 audioworklet_data_t * audioworklet = audioworklet_static_data ;
384384
385- if (!audioworklet )
386- return false;
387-
385+ if (audioworklet )
386+ {
388387#ifdef EMSCRIPTEN_AUDIO_FAKE_BLOCK
389- if (!audioworklet -> block_requested )
390- return false;
388+ if (!audioworklet -> block_requested )
389+ return false;
391390#endif
392391
393- while (audioworklet -> initing && !audioworklet -> init_done )
392+ while (audioworklet -> initing && !audioworklet -> init_done )
394393#ifdef EMSCRIPTEN_AUDIO_ASYNC_BLOCK
395- retro_sleep (1 );
394+ retro_sleep (1 );
396395#else
397- return true;
396+ return true;
398397#endif
399- if (audioworklet -> init_done && !audioworklet -> driver_running )
400- {
401- audioworklet -> initing = false;
402- if (audioworklet -> init_error )
398+ if (audioworklet -> init_done && !audioworklet -> driver_running )
403399 {
404- audioworklet_init_error (audioworklet );
405- abort ();
406- return false;
400+ audioworklet -> initing = false;
401+ if (audioworklet -> init_error )
402+ {
403+ audioworklet_init_error (audioworklet );
404+ abort ();
405+ return false;
406+ }
407+ audioworklet -> driver_running = true;
407408 }
408- audioworklet -> driver_running = true;
409- }
410409#ifdef EMSCRIPTEN_AUDIO_EXTERNAL_WRITE_BLOCK
411- if (!audioworklet -> driver_running )
412- return false;
410+ if (!audioworklet -> driver_running )
411+ return false;
413412
414- while (emscripten_atomic_load_u32 (& audioworklet -> write_avail_bytes ) < audioworklet -> write_avail_diff )
415- {
416- audioworklet_resume_ctx (audioworklet );
413+ while (emscripten_atomic_load_u32 (& audioworklet -> write_avail_bytes ) < audioworklet -> write_avail_diff )
414+ {
415+ audioworklet_resume_ctx (audioworklet );
417416#ifdef EMSCRIPTEN_AUDIO_ASYNC_BLOCK
418- retro_sleep (1 );
417+ retro_sleep (1 );
419418#else
420- return true;
419+ return true;
421420#endif
422- }
421+ }
423422#endif
424423
425424#ifdef EMSCRIPTEN_AUDIO_FAKE_BLOCK
426- audioworklet -> block_requested = false;
427- platform_emscripten_exit_fake_block ();
428- return true; /* return to RAF if needed */
425+ audioworklet -> block_requested = false;
426+ platform_emscripten_exit_fake_block ();
427+ return true; /* return to RAF if needed */
429428#endif
429+ }
430430 return false;
431431}
432432#endif
0 commit comments