diff --git a/src/react-components/ui-root.js b/src/react-components/ui-root.js index 5042d1b444c9171ba4dbf62bf72dd50800276c88..946784e9e1f6e18aa6a412a86d350f39a1772a24 100644 --- a/src/react-components/ui-root.js +++ b/src/react-components/ui-root.js @@ -364,12 +364,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); @@ -391,7 +391,7 @@ class UIRoot extends Component { this.props.store.update({ lastUsedMicDeviceId: micDeviceId }); } - this.setState({ micUpdateInterval }); + this.setState({ micLevelAudioContext, micUpdateInterval }); } this.setState({ mediaStream }); @@ -479,6 +479,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 }); };