From 5c4accb9ffa65495dd988f66c9d1a66db369a672 Mon Sep 17 00:00:00 2001 From: Greg Fodor <gfodor@gmail.com> Date: Fri, 6 Apr 2018 11:33:27 -0700 Subject: [PATCH] Close mic resources on entry --- src/react-components/ui-root.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js index 83ddd1177..fc6727c21 100644 --- a/src/react-components/ui-root.js +++ b/src/react-components/ui-root.js @@ -356,12 +356,12 @@ class UIRoot extends Component { mediaStream.addTrack(this.state.audioTrack); const AudioContext = window.AudioContext || window.webkitAudioContext; - const audioContext = new AudioContext(); - const source = audioContext.createMediaStreamSource(mediaStream); - const analyzer = audioContext.createAnalyser(); + const micLevelAudioContext = new AudioContext(); + const micSource = micLevelAudioContext.createMediaStreamSource(mediaStream); + const analyzer = micLevelAudioContext.createAnalyser(); const levels = new Uint8Array(analyzer.fftSize); - source.connect(analyzer); + micSource.connect(analyzer); const micUpdateInterval = setInterval(() => { analyzer.getByteTimeDomainData(levels); @@ -383,7 +383,7 @@ class UIRoot extends Component { this.props.store.update({ lastUsedMicDeviceId: micDeviceId }); } - this.setState({ micUpdateInterval }); + this.setState({ micLevelAudioContext, micUpdateInterval }); } this.setState({ mediaStream }); @@ -471,6 +471,12 @@ class UIRoot extends Component { } this.stopTestTone(); + + if (this.state.micLevelAudioContext) { + this.state.micLevelAudioContext.close(); + clearInterval(this.state.micUpdateInterval); + } + this.setState({ entryStep: ENTRY_STEPS.finished }); }; -- GitLab