From 04ff593bf58671a7cf321177e89327873da65aec Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 23 Aug 2023 16:12:30 -0400 Subject: [PATCH] emscriptenaudio: Fire the capture silence_callback at an interval. Previously it was using setTimeout, not setInterval, so it would only fire once, which was obviously a mistake. (cherry picked from commit fb79211732d0cdf17a250a43c619b6938842cfaf) --- src/audio/emscripten/SDL_emscriptenaudio.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/audio/emscripten/SDL_emscriptenaudio.c b/src/audio/emscripten/SDL_emscriptenaudio.c index 7d5fad3b61..a7dca5d883 100644 --- a/src/audio/emscripten/SDL_emscriptenaudio.c +++ b/src/audio/emscripten/SDL_emscriptenaudio.c @@ -156,7 +156,7 @@ static void EMSCRIPTENAUDIO_CloseDevice(_THIS) var SDL2 = Module['SDL2']; if ($0) { if (SDL2.capture.silenceTimer !== undefined) { - clearTimeout(SDL2.capture.silenceTimer); + clearInterval(SDL2.capture.silenceTimer); } if (SDL2.capture.stream !== undefined) { var tracks = SDL2.capture.stream.getAudioTracks(); @@ -294,7 +294,7 @@ static int EMSCRIPTENAUDIO_OpenDevice(_THIS, const char *devname) var have_microphone = function(stream) { //console.log('SDL audio capture: we have a microphone! Replacing silence callback.'); if (SDL2.capture.silenceTimer !== undefined) { - clearTimeout(SDL2.capture.silenceTimer); + clearInterval(SDL2.capture.silenceTimer); SDL2.capture.silenceTimer = undefined; SDL2.capture.silenceBuffer = undefined } @@ -323,7 +323,7 @@ static int EMSCRIPTENAUDIO_OpenDevice(_THIS, const char *devname) dynCall('vi', $2, [$3]); }; - SDL2.capture.silenceTimer = setTimeout(silence_callback, ($1 / SDL2.audioContext.sampleRate) * 1000); + SDL2.capture.silenceTimer = setInterval(silence_callback, ($1 / SDL2.audioContext.sampleRate) * 1000); if ((navigator.mediaDevices !== undefined) && (navigator.mediaDevices.getUserMedia !== undefined)) { navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then(have_microphone).catch(no_microphone);