From 1c7e53505756e8af23a4b841ffe336c28c51a71e Mon Sep 17 00:00:00 2001 From: Myx Date: Thu, 19 Mar 2026 04:15:59 +0100 Subject: [PATCH] Possibly screensharing fix for windows where they get deafened when screensharing with audio --- .../desktop-electron-screen-share.capture.ts | 10 ++++++++-- src/app/core/services/webrtc/screen-share.manager.ts | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/app/core/services/webrtc/screen-share-platforms/desktop-electron-screen-share.capture.ts b/src/app/core/services/webrtc/screen-share-platforms/desktop-electron-screen-share.capture.ts index 4645675..c8b5de1 100644 --- a/src/app/core/services/webrtc/screen-share-platforms/desktop-electron-screen-share.capture.ts +++ b/src/app/core/services/webrtc/screen-share-platforms/desktop-electron-screen-share.capture.ts @@ -27,8 +27,14 @@ export class DesktopElectronScreenShareCapture { return !!this.dependencies.getElectronApi()?.getSources && !this.isLinuxElectron(); } - shouldSuppressRemotePlaybackDuringShare(includeSystemAudio: boolean): boolean { - return includeSystemAudio && this.isWindowsElectron(); + shouldSuppressRemotePlaybackDuringShare( + includeSystemAudio: boolean, + usingElectronDesktopCapture: boolean + ): boolean { + // Chromium display-media capture can use own-audio suppression on modern + // builds. The Electron desktop-capturer fallback cannot, so keep the old + // Windows mute behavior only for that fallback path. + return includeSystemAudio && usingElectronDesktopCapture && this.isWindowsElectron(); } async startCapture( diff --git a/src/app/core/services/webrtc/screen-share.manager.ts b/src/app/core/services/webrtc/screen-share.manager.ts index e509aad..a6f4e16 100644 --- a/src/app/core/services/webrtc/screen-share.manager.ts +++ b/src/app/core/services/webrtc/screen-share.manager.ts @@ -340,7 +340,10 @@ export class ScreenShareManager { includeSystemAudio: this.isScreenActive ? includeSystemAudio : false, stream: this.isScreenActive ? this.activeScreenStream : null, suppressRemotePlayback: this.isScreenActive - && this.desktopElectronScreenShareCapture.shouldSuppressRemotePlaybackDuringShare(includeSystemAudio), + && this.desktopElectronScreenShareCapture.shouldSuppressRemotePlaybackDuringShare( + includeSystemAudio, + captureMethod === 'electron-desktop' + ), forceDefaultRemotePlaybackOutput: this.isScreenActive && includeSystemAudio && captureMethod === 'linux-electron'