From a60494e583a7fa692c336896b8a70654bae05708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Mon, 22 Sep 2025 22:22:07 +0300 Subject: [PATCH] When targeting a build that unconditionally has AudioContext() API, do not emit code to check for its presence. --- src/lib/libwebaudio.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/libwebaudio.js b/src/lib/libwebaudio.js index 55332944f7b5e..91e0e5419646f 100644 --- a/src/lib/libwebaudio.js +++ b/src/lib/libwebaudio.js @@ -54,9 +54,12 @@ var LibraryWebAudio = { // this avoids the user needing to manually add the dependency on the command line. emscripten_create_audio_context__deps: ['$emscriptenRegisterAudioObject', '$emscriptenGetAudioObject'], emscripten_create_audio_context: (options) => { + // Safari added unprefixed AudioContext support in Safari 14.5 on iOS: https://caniuse.com/audio-api +#if MIN_SAFARI_VERSION < 140500 || ENVIRONMENT_MAY_BE_NODE || ENVIRONMENT_MAY_BE_SHELL var ctx = window.AudioContext || window.webkitAudioContext; #if ASSERTIONS if (!ctx) console.error('emscripten_create_audio_context failed! Web Audio is not supported.'); +#endif #endif var opts = options ? { @@ -69,7 +72,12 @@ var LibraryWebAudio = { console.dir(opts); #endif +#if MIN_SAFARI_VERSION < 140500 || ENVIRONMENT_MAY_BE_NODE || ENVIRONMENT_MAY_BE_SHELL return ctx && emscriptenRegisterAudioObject(new ctx(opts)); +#else + // We are targeting an environment where we assume that AudioContext() API unconditionally exists. + return emscriptenRegisterAudioObject(new AudioContext(opts)); +#endif }, emscripten_resume_audio_context_async: (contextHandle, callback, userData) => {