diff --git a/test/test_browser.py b/test/test_browser.py index 0ba5e9b9e1e39..12d7e9afe4a4d 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -5512,6 +5512,13 @@ def test_audio_worklet_stereo_io(self, args): shutil.copy(test_file('webaudio/audio_files/emscripten-bass.mp3'), 'audio_files/') self.btest_exit('webaudio/audioworklet_in_out_stereo.c', args=['-sAUDIO_WORKLET', '-sWASM_WORKERS', '-DBROWSER_TEST'] + args) + # Tests AudioWorklet with emscripten_futex_wake(). + @requires_sound_hardware + @also_with_minimal_runtime + @disabled('https://github.com/emscripten-core/emscripten/issues/22962') + def test_audio_worklet_emscripten_futex_wake(self): + self.btest('webaudio/audioworklet_emscripten_futex_wake.cpp', expected='0', args=['-sAUDIO_WORKLET', '-sWASM_WORKERS', '-pthread', '-sPTHREAD_POOL_SIZE=2']) + def test_error_reporting(self): # Test catching/reporting Error objects create_file('post.js', 'throw new Error("oops");') diff --git a/test/test_interactive.py b/test/test_interactive.py index 78de7771cd5f7..8e877d6bf54b8 100644 --- a/test/test_interactive.py +++ b/test/test_interactive.py @@ -293,11 +293,6 @@ def test_audio_worklet(self): self.btest('webaudio/audioworklet.c', expected='0', args=['-sAUDIO_WORKLET', '-sWASM_WORKERS', '--preload-file', test_file('hello_world.c') + '@/']) self.btest('webaudio/audioworklet.c', expected='0', args=['-sAUDIO_WORKLET', '-sWASM_WORKERS', '-pthread']) - # Tests AudioWorklet with emscripten_futex_wake(). - @also_with_minimal_runtime - def test_audio_worklet_emscripten_futex_wake(self): - self.btest('webaudio/audioworklet_emscripten_futex_wake.cpp', expected='0', args=['-sAUDIO_WORKLET', '-sWASM_WORKERS', '-pthread', '-sPTHREAD_POOL_SIZE=2']) - # Tests a second AudioWorklet example: sine wave tone generator. def test_audio_worklet_tone_generator(self): self.btest('webaudio/audio_worklet_tone_generator.c', expected='0', args=['-sAUDIO_WORKLET', '-sWASM_WORKERS']) diff --git a/test/webaudio/audioworklet_emscripten_futex_wake.cpp b/test/webaudio/audioworklet_emscripten_futex_wake.cpp index 65d0c8dd60234..95aa2f6e87b25 100644 --- a/test/webaudio/audioworklet_emscripten_futex_wake.cpp +++ b/test/webaudio/audioworklet_emscripten_futex_wake.cpp @@ -13,6 +13,9 @@ int futexLocation = 0; int testSuccess = 0; +// Internal, found in 'system/lib/pthread/threading_internal.h' +extern "C" int _emscripten_thread_supports_atomics_wait(); + bool ProcessAudio(int numInputs, const AudioSampleFrame *inputs, int numOutputs, AudioSampleFrame *outputs, int numParams, const AudioParamFrame *params, void *userData) { int supportsAtomicWait = _emscripten_thread_supports_atomics_wait(); printf("supportsAtomicWait: %d\n", supportsAtomicWait);