Bug 1183033 - Don't mute the system channel type. r=baku
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -769,16 +769,21 @@ void
AudioChannelService::SetAudioChannelMuted(nsPIDOMWindow* aWindow,
AudioChannel aAudioChannel,
bool aMuted)
{
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(aWindow);
MOZ_ASSERT(aWindow->IsOuterWindow());
+ if (aAudioChannel == AudioChannel::System) {
+ // Workaround for bug1183033, system channel type can always playback.
+ return;
+ }
+
AudioChannelWindow* winData = GetOrCreateWindowData(aWindow);
winData->mChannels[(uint32_t)aAudioChannel].mMuted = aMuted;
RefreshAgentsVolume(aWindow);
}
NS_IMETHODIMP
AudioChannelService::SetAudioChannelMuted(nsIDOMWindow* aWindow,
unsigned short aAudioChannel,
--- a/dom/audiochannel/AudioChannelService.h
+++ b/dom/audiochannel/AudioChannelService.h
@@ -170,17 +170,20 @@ private:
uint32_t mNumberOfAgents;
};
struct AudioChannelWindow final
{
explicit AudioChannelWindow(uint64_t aWindowID)
: mWindowID(aWindowID)
- {}
+ {
+ // Workaround for bug1183033, system channel type can always playback.
+ mChannels[(int16_t)AudioChannel::System].mMuted = false;
+ }
uint64_t mWindowID;
AudioChannelConfig mChannels[NUMBER_OF_AUDIO_CHANNELS];
// Raw pointer because the AudioChannelAgent must unregister itself.
nsTObserverArray<AudioChannelAgent*> mAgents;
};