From a5ff12052323d0dfe253e153af2573264e3531b1 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Fri, 21 Feb 2025 14:47:15 +0100 Subject: [PATCH 1/2] Step 1, make the test at least compile --- test/webaudio/audioworklet_emscripten_futex_wake.cpp | 3 +++ 1 file changed, 3 insertions(+) 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); From 85994921d73bd4a5fd56e45b304c1d9201a82f77 Mon Sep 17 00:00:00 2001 From: Carl Woffenden Date: Fri, 21 Feb 2025 14:52:40 +0100 Subject: [PATCH 2/2] Moved futex test to browser (since audio now works) --- test/test_browser.py | 7 +++++++ test/test_interactive.py | 5 ----- 2 files changed, 7 insertions(+), 5 deletions(-) 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'])