From d5debf882c6f1b5dfa5f51d84b1a5913f22f3bb3 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Mon, 9 Apr 2018 07:01:02 -0700 Subject: [PATCH] Try to do a better job cleaning up channel detection audio nodes --- js/media/detectChannels.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/js/media/detectChannels.js b/js/media/detectChannels.js index 16a2b428..56971f1f 100644 --- a/js/media/detectChannels.js +++ b/js/media/detectChannels.js @@ -15,14 +15,21 @@ function createAnalysers(source) { leftGain.connect(leftAnalyser); rightGain.connect(rightAnalyser); - return { left: leftAnalyser, right: rightAnalyser }; + function destroy() { + source.disconnect(splitter); + splitter.disconnect(); + leftGain.disconnect(); + rightGain.disconnect(); + } + + return { left: leftAnalyser, right: rightAnalyser, destroy }; } const MAX_CALLS = 1000; export default async function detectChannels(source) { return new Promise((resolve, reject) => { - const { left, right } = createAnalysers(source); + const { left, right, destroy } = createAnalysers(source); const dataArray = new Uint8Array(left.frequencyBinCount); let maxLeft = 0; @@ -40,11 +47,13 @@ export default async function detectChannels(source) { } else { resolve(1); } + destroy(); clearInterval(intervalHandle); } if (calls >= MAX_CALLS) { reject(); + destroy(); } calls++;