diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js index 83ddd1177f5be71efe796f02043bdceedb2cc6cd..fc6727c2121cc8ec77f1894ce3be006f01f403d3 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 }); };