From 0c16dd16ff698707151079fcfe61d8f8eeeb0026 Mon Sep 17 00:00:00 2001 From: Robert Long <robert@robertlong.me> Date: Wed, 9 May 2018 14:59:04 -0700 Subject: [PATCH] Update audio-context-fix to work for in Chrome. --- src/hub.js | 2 +- src/utils/audio-context-fix.js | 22 ++++++++++++++++++++++ src/utils/ios-audio-context-fix.js | 23 ----------------------- 3 files changed, 23 insertions(+), 24 deletions(-) create mode 100644 src/utils/audio-context-fix.js delete mode 100644 src/utils/ios-audio-context-fix.js diff --git a/src/hub.js b/src/hub.js index 1c71658bf..cadf87e9f 100644 --- a/src/hub.js +++ b/src/hub.js @@ -17,7 +17,7 @@ import "aframe-billboard-component"; import "aframe-rounded"; import "webrtc-adapter"; import "aframe-slice9-component"; -import "./utils/ios-audio-context-fix"; +import "./utils/audio-context-fix"; import trackpad_dpad4 from "./behaviours/trackpad-dpad4"; import joystick_dpad4 from "./behaviours/joystick-dpad4"; diff --git a/src/utils/audio-context-fix.js b/src/utils/audio-context-fix.js new file mode 100644 index 000000000..4cca2a84a --- /dev/null +++ b/src/utils/audio-context-fix.js @@ -0,0 +1,22 @@ +/** + * Mobile Safari and Chrome will start Audio contexts in a "suspended" state. + * A user interaction (touch/mouse event) is needed in order to resume the AudioContext. + */ + +document.addEventListener("DOMContentLoaded", () => { + const ctx = THREE.AudioContext.getContext(); + + function resume() { + ctx.resume(); + + setTimeout(function() { + if (ctx.state === "running") { + document.body.removeEventListener("touchend", resume, false); + document.body.removeEventListener("mouseup", resume, false); + } + }, 0); + } + + document.body.addEventListener("touchend", resume, false); + document.body.addEventListener("mouseup", resume, false); +}); diff --git a/src/utils/ios-audio-context-fix.js b/src/utils/ios-audio-context-fix.js deleted file mode 100644 index ce474194f..000000000 --- a/src/utils/ios-audio-context-fix.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Mobile Safari will start Audio contexts in a "suspended" state. - * A user interaction (touch event) is needed in order to resume the AudioContext. - */ -const iDevices = /\biPhone.*Mobile|\biPod|\biPad|AppleCoreMedia/; - -if (iDevices.test(navigator.userAgent)) { - document.addEventListener("DOMContentLoaded", () => { - const ctx = THREE.AudioContext.getContext(); - - function resume() { - ctx.resume(); - - setTimeout(function() { - if (ctx.state === "running") { - document.body.removeEventListener("touchend", resume, false); - } - }, 0); - } - - document.body.addEventListener("touchend", resume, false); - }); -} -- GitLab