From 5515e4f495f7bf816ec78d48c379a33a5591f516 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 7 Jul 2022 19:36:20 +0100 Subject: [PATCH] Prevent double mute status changed events Audio & video mute status were set in separate calls but share a mute status changed event, so you'd always get two mute status changed events emitted. We could suppress events where the mute status didn't change, but this would still get two events saying the same thing when they both changed. Instead, merge setAudioMuted & setVideoMuted into a single call that sets either or both. --- src/webrtc/call.ts | 10 ++++------ src/webrtc/callFeed.ts | 23 ++++++++++------------- src/webrtc/groupCall.ts | 6 +++--- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/webrtc/call.ts b/src/webrtc/call.ts index c1161f333a2..c23133ea493 100644 --- a/src/webrtc/call.ts +++ b/src/webrtc/call.ts @@ -1262,7 +1262,7 @@ export class MatrixCall extends TypedEventEmitter } /** - * Set feed's internal audio mute state - * @param muted is the feed's audio muted? - */ - public setAudioMuted(muted: boolean): void { - this.audioMuted = muted; - this.speakingVolumeSamples.fill(-Infinity); - this.emit(CallFeedEvent.MuteStateChanged, this.audioMuted, this.videoMuted); - } - - /** - * Set feed's internal video mute state + * Set one or both of feed's internal audio and video video mute state + * Either value may be null to leave it as-is * @param muted is the feed's video muted? */ - public setVideoMuted(muted: boolean): void { - this.videoMuted = muted; + public setAudioVideoMuted(audioMuted: boolean, videoMuted: boolean): void { + if (audioMuted !== null) { + if (this.audioMuted !== audioMuted) { + this.speakingVolumeSamples.fill(-Infinity); + } + this.audioMuted = audioMuted; + } + if (videoMuted !== null) this.videoMuted = videoMuted; this.emit(CallFeedEvent.MuteStateChanged, this.audioMuted, this.videoMuted); } diff --git a/src/webrtc/groupCall.ts b/src/webrtc/groupCall.ts index 2fb7f1792ed..a494447a0fc 100644 --- a/src/webrtc/groupCall.ts +++ b/src/webrtc/groupCall.ts @@ -460,7 +460,7 @@ export class GroupCall extends TypedEventEmitter