diff --git a/src/browser/base/zen-components/ZenMediaController.mjs b/src/browser/base/zen-components/ZenMediaController.mjs index 2c85c90a..f8c597ea 100644 --- a/src/browser/base/zen-components/ZenMediaController.mjs +++ b/src/browser/base/zen-components/ZenMediaController.mjs @@ -88,8 +88,13 @@ class ZenMediaController { * @param {Object} browser - The browser associated with the media controller. */ activateMediaControls(mediaController, browser) { + if (this._currentBrowser) this.updateMuteState(); if (this._currentBrowser?.browserId === browser.browserId) return; - else this._currentBrowser = browser; + else { + this.deinitMediaController(this._currentMediaController); + this._currentMediaController = mediaController; + this._currentBrowser = browser; + } mediaController.onpositionstatechange = this.onPositionstateChange.bind(this); mediaController.onplaybackstatechange = this.onPlaybackstateChange.bind(this); @@ -97,11 +102,6 @@ class ZenMediaController { mediaController.onmetadatachange = this.onMetadataChange.bind(this); mediaController.ondeactivated = this.onDeactivated.bind(this); - if (this._currentMediaController === mediaController) return; - else this.deinitMediaController(this._currentMediaController); - - this._currentMediaController = mediaController; - const metadata = mediaController.getMetadata(); const positionState = mediaController.getPositionState(); @@ -258,6 +258,14 @@ class ZenMediaController { this._currentMediaController?.play(); } } + + updateMuteState() { + if (this._currentBrowser._audioMuted) { + this.mediaControlBar.setAttribute('muted', ''); + } else { + this.mediaControlBar.removeAttribute('muted'); + } + } } window.gZenMediaController = new ZenMediaController(); diff --git a/src/toolkit/actors/AudioPlaybackParent-sys-mjs.patch b/src/toolkit/actors/AudioPlaybackParent-sys-mjs.patch index 229c19e5..1c84761b 100644 --- a/src/toolkit/actors/AudioPlaybackParent-sys-mjs.patch +++ b/src/toolkit/actors/AudioPlaybackParent-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/actors/AudioPlaybackParent.sys.mjs b/toolkit/actors/AudioPlaybackParent.sys.mjs -index db682fd90b2bb5330497d2cf2158ff4cac6bbc47..c44e39f47f9d9b13918930a6c96ee7aa39c51b36 100644 +index db682fd90b2bb5330497d2cf2158ff4cac6bbc47..4e6f891275d489418b8ea58a10345a1baa3a554c 100644 --- a/toolkit/actors/AudioPlaybackParent.sys.mjs +++ b/toolkit/actors/AudioPlaybackParent.sys.mjs -@@ -14,6 +14,7 @@ export class AudioPlaybackParent extends JSWindowActorParent { +@@ -14,10 +14,12 @@ export class AudioPlaybackParent extends JSWindowActorParent { switch (aMessage.name) { case "AudioPlayback:Start": this._hasAudioPlayback = true; @@ -10,3 +10,8 @@ index db682fd90b2bb5330497d2cf2158ff4cac6bbc47..c44e39f47f9d9b13918930a6c96ee7aa browser.audioPlaybackStarted(); break; case "AudioPlayback:Stop": + this._hasAudioPlayback = false; ++ browser.ownerGlobal.gZenMediaController.updateMuteState(); + browser.audioPlaybackStopped(); + break; + case "AudioPlayback:ActiveMediaBlockStart":