1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-12-01 04:43:29 +03:00

Merge pull request #1904 from matrix-org/robertlong/callfeed-dispose

Properly dispose of CallFeeds
This commit is contained in:
Robert Long
2021-09-10 10:07:10 -07:00
committed by GitHub
2 changed files with 11 additions and 1 deletions

View File

@@ -543,6 +543,10 @@ export class MatrixCall extends EventEmitter {
}
private deleteAllFeeds(): void {
for (const feed of this.feeds) {
feed.dispose();
}
this.feeds = [];
this.emit(CallEvent.FeedsChanged, this.feeds);
}
@@ -556,6 +560,7 @@ export class MatrixCall extends EventEmitter {
return;
}
feed.dispose();
this.feeds.splice(this.feeds.indexOf(feed), 1);
this.emit(CallEvent.FeedsChanged, this.feeds);
}

View File

@@ -36,6 +36,7 @@ export class CallFeed extends EventEmitter {
private frequencyBinCount: Float32Array;
private speakingThreshold = SPEAKING_THRESHOLD;
private speaking = false;
private volumeLooperTimeout: number;
constructor(
public stream: MediaStream,
@@ -166,7 +167,7 @@ export class CallFeed extends EventEmitter {
private volumeLooper(): void {
if (!this.analyser) return;
setTimeout(() => {
this.volumeLooperTimeout = setTimeout(() => {
if (!this.measuringVolumeActivity) return;
this.analyser.getFloatFrequencyData(this.frequencyBinCount);
@@ -188,4 +189,8 @@ export class CallFeed extends EventEmitter {
this.volumeLooper();
}, POLLING_INTERVAL);
}
public dispose(): void {
clearTimeout(this.volumeLooperTimeout);
}
}