From 5baec853f3878c6e7ab4bff8d817d67bbf1cd280 Mon Sep 17 00:00:00 2001 From: "Joseph T. Lyons" Date: Wed, 25 Mar 2026 02:03:09 -0400 Subject: [PATCH] Always open microphone track on call join (#52236) Release Notes: - Fixed 1-2 seconds of audio silence when unmuting for the first time during a call with Bluetooth headphones when `mute_on_join` is enabled. --- crates/call/src/call_impl/room.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/call/src/call_impl/room.rs b/crates/call/src/call_impl/room.rs index 5f8eeb965cbc9d5665e8316cf1dde329b4277260..f92a8163d54de0c21c7318c4baab5aad5ce49b75 100644 --- a/crates/call/src/call_impl/room.rs +++ b/crates/call/src/call_impl/room.rs @@ -1773,7 +1773,15 @@ fn spawn_room_connection( }); this.diagnostics = Some(cx.new(|cx| CallDiagnostics::new(weak_room, cx))); - if !muted_by_user && this.can_use_microphone() { + // Always open the microphone track on join, even when + // `muted_by_user` is set. Note that the microphone will still + // be muted, as it is still gated in `share_microphone` by + // `muted_by_user`. For users that have `mute_on_join` enabled, + // this moves the Bluetooth profile switch (A2DP -> HFP) (which + // can cause 1-2 seconds of audio silence on some Bluetooth + // headphones) from first unmute to channel join, where + // instability is expected. + if this.can_use_microphone() { this.share_microphone(cx) } else { Task::ready(Ok(()))