From e52b3e4432d6f9fa31004623bf283378df11199d Mon Sep 17 00:00:00 2001 From: "Joseph C. Osborn" Date: Thu, 13 Mar 2025 10:12:27 -0700 Subject: [PATCH 1/5] Fix iteration of OpenAL src.bufQueue --- src/lib/libopenal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/libopenal.js b/src/lib/libopenal.js index 50c156c1a211a..f729aed7cffca 100644 --- a/src/lib/libopenal.js +++ b/src/lib/libopenal.js @@ -4056,7 +4056,7 @@ var LibraryOpenAL = { // Find the first non-zero buffer in the queue to determine the proper format var templateBuf = AL.buffers[0]; - for (var buf of src.bufQueue.length) { + for (var buf of src.bufQueue) { if (buf.id !== 0) { templateBuf = buf; break; From 196a9dd18384e5a1a97ec61d5a03c14ba0df651e Mon Sep 17 00:00:00 2001 From: "Joseph C. Osborn" Date: Thu, 13 Mar 2025 11:30:26 -0700 Subject: [PATCH 2/5] short version of test_openal_buf for automated tests --- test/openal/test_openal_buffers.c | 5 +++-- test/test_browser.py | 11 +++++++++++ test/third_party/googletest | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/test/openal/test_openal_buffers.c b/test/openal/test_openal_buffers.c index dc9af976f6dd0..7986f30efed82 100644 --- a/test/openal/test_openal_buffers.c +++ b/test/openal/test_openal_buffers.c @@ -89,7 +89,9 @@ void iter() { alGetSourcef(source, AL_PITCH, &testPitch); assert(pitch == testPitch); #endif - +#ifdef TEST_FAST + offset = size; +#endif // Exit once we've processed the entire clip. if (offset >= size) { #if __EMSCRIPTEN__ @@ -192,7 +194,6 @@ int main(int argc, char* argv[]) { ALint srcLen = 0; alGetSourcei(source, 0x2009 /* AL_BYTE_LENGTH_SOFT */, &srcLen); assert(srcLen == NUM_BUFFERS * BUFFER_SIZE); - #ifdef TEST_ANIMATED_PITCH printf("You should hear a clip of the 1902 piano song \"The Entertainer\" played back at a high pitch rate, and animated to slow down to half playback speed.\n"); #else diff --git a/test/test_browser.py b/test/test_browser.py index 8dbfe4e5221ca..bb839e1149e9b 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2323,6 +2323,17 @@ def test_openal_capture_sanity(self): def test_openal_extensions(self): self.btest_exit('openal/test_openal_extensions.c') + @parameterized({ + '': ([],), + 'proxy_to_pthread': (['-sPROXY_TO_PTHREAD', '-pthread'],), + }) + def test_openal_playback(self, args): + shutil.copy(test_file('sounds/audio.wav'), '.') + self.btest('openal/test_openal_playback.c', '1', emcc_args=['-O2', '--preload-file', 'audio.wav'] + args) + + def test_openal_buffers(self): + self.btest_exit('openal/test_openal_buffers.c', emcc_args=['-DTEST_FAST=1','--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) + def test_runtimelink(self): create_file('header.h', r''' struct point { diff --git a/test/third_party/googletest b/test/third_party/googletest index b514bdc898e29..4fb7039fda3f6 160000 --- a/test/third_party/googletest +++ b/test/third_party/googletest @@ -1 +1 @@ -Subproject commit b514bdc898e2951020cbdca1304b75f5950d1f59 +Subproject commit 4fb7039fda3f6588c7ca9664176f8c9e0a023b4a From d3d2d85c35ecc95128a981c55574e08b81135ffe Mon Sep 17 00:00:00 2001 From: "Joseph C. Osborn" Date: Thu, 13 Mar 2025 11:55:58 -0700 Subject: [PATCH 3/5] Change TEST_FAST to TEST_INTERACTIVE in test_openal_buffers --- test/openal/test_openal_buffers.c | 2 +- test/test_browser.py | 2 +- test/test_interactive.py | 4 ++-- test/third_party/googletest | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/openal/test_openal_buffers.c b/test/openal/test_openal_buffers.c index 7986f30efed82..919dd69be9cab 100644 --- a/test/openal/test_openal_buffers.c +++ b/test/openal/test_openal_buffers.c @@ -89,7 +89,7 @@ void iter() { alGetSourcef(source, AL_PITCH, &testPitch); assert(pitch == testPitch); #endif -#ifdef TEST_FAST +#ifndef TEST_INTERACTIVE offset = size; #endif // Exit once we've processed the entire clip. diff --git a/test/test_browser.py b/test/test_browser.py index bb839e1149e9b..0c4ea37a8d4e5 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2332,7 +2332,7 @@ def test_openal_playback(self, args): self.btest('openal/test_openal_playback.c', '1', emcc_args=['-O2', '--preload-file', 'audio.wav'] + args) def test_openal_buffers(self): - self.btest_exit('openal/test_openal_buffers.c', emcc_args=['-DTEST_FAST=1','--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) + self.btest_exit('openal/test_openal_buffers.c', emcc_args=['--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) def test_runtimelink(self): create_file('header.h', r''' diff --git a/test/test_interactive.py b/test/test_interactive.py index e3423b05cb880..1038ef5434118 100644 --- a/test/test_interactive.py +++ b/test/test_interactive.py @@ -159,10 +159,10 @@ def test_openal_playback(self, args): self.btest('openal/test_openal_playback.c', '1', emcc_args=['-O2', '--preload-file', 'audio.wav'] + args) def test_openal_buffers(self): - self.btest_exit('openal/test_openal_buffers.c', emcc_args=['--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) + self.btest_exit('openal/test_openal_buffers.c', emcc_args=['-DTEST_INTERACTIVE=1', '--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) def test_openal_buffers_animated_pitch(self): - self.btest_exit('openal/test_openal_buffers.c', emcc_args=['-DTEST_ANIMATED_PITCH=1', '--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) + self.btest_exit('openal/test_openal_buffers.c', emcc_args=['-DTEST_INTERACTIVE=1', '-DTEST_ANIMATED_PITCH=1', '--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) def test_openal_looped_pitched_playback(self): self.btest('openal/test_openal_playback.c', '1', emcc_args=['-DTEST_LOOPED_PLAYBACK=1', '--preload-file', test_file('sounds/the_entertainer.wav') + '@/audio.wav'],) diff --git a/test/third_party/googletest b/test/third_party/googletest index 4fb7039fda3f6..b514bdc898e29 160000 --- a/test/third_party/googletest +++ b/test/third_party/googletest @@ -1 +1 @@ -Subproject commit 4fb7039fda3f6588c7ca9664176f8c9e0a023b4a +Subproject commit b514bdc898e2951020cbdca1304b75f5950d1f59 From 9ec344776bf4a85e90f084302b0dd9efc8051924 Mon Sep 17 00:00:00 2001 From: "Joseph C. Osborn" Date: Thu, 13 Mar 2025 12:37:04 -0700 Subject: [PATCH 4/5] Tweak browser openal_playback test --- test/test_browser.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/test/test_browser.py b/test/test_browser.py index 0c4ea37a8d4e5..ea34231ad0d41 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2323,17 +2323,13 @@ def test_openal_capture_sanity(self): def test_openal_extensions(self): self.btest_exit('openal/test_openal_extensions.c') - @parameterized({ - '': ([],), - 'proxy_to_pthread': (['-sPROXY_TO_PTHREAD', '-pthread'],), - }) - def test_openal_playback(self, args): + def test_openal_playback(self): shutil.copy(test_file('sounds/audio.wav'), '.') - self.btest('openal/test_openal_playback.c', '1', emcc_args=['-O2', '--preload-file', 'audio.wav'] + args) + self.btest_exit('openal/test_openal_playback.c', emcc_args=['-O2', '--preload-file', 'audio.wav'],) def test_openal_buffers(self): self.btest_exit('openal/test_openal_buffers.c', emcc_args=['--preload-file', test_file('sounds/the_entertainer.wav') + '@/'],) - + def test_runtimelink(self): create_file('header.h', r''' struct point { From 7de129f825140e624aa950bf5b3800f9470502e8 Mon Sep 17 00:00:00 2001 From: "Joseph C. Osborn" Date: Fri, 14 Mar 2025 11:18:43 -0700 Subject: [PATCH 5/5] Copy sources[0] to intptr_t --- test/openal/test_openal_playback.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/openal/test_openal_playback.c b/test/openal/test_openal_playback.c index 4242b88ce5d6c..8aac17ce3e31b 100644 --- a/test/openal/test_openal_playback.c +++ b/test/openal/test_openal_playback.c @@ -295,10 +295,11 @@ int main() { #ifdef __EMSCRIPTEN__ + intptr_t first_src = sources[0]; #if defined(TEST_LOOPED_PLAYBACK) - emscripten_set_main_loop_arg(main_tick, (void*)sources[0], 0, 0); + emscripten_set_main_loop_arg(main_tick, (void*)first_src, 0, 0); #else - emscripten_async_call(playSource, (void*)(sources[0]), 700); + emscripten_async_call(playSource, (void*)first_src, 700); #endif #else usleep(700000);