@@ -36,7 +36,9 @@ void EmuInstance::audioInit()
3636 audioVolume = localCfg.GetInt (" Audio.Volume" );
3737 audioDSiVolumeSync = localCfg.GetBool (" Audio.DSiVolumeSync" );
3838
39- audioMuted = false ;
39+ audioMutedToggle = false ;
40+ audioMutedByFastForward = false ;
41+ audioMutedByWindowFocus = false ;
4042 audioSyncCond = SDL_CreateCond ();
4143 audioSyncLock = SDL_CreateMutex ();
4244
@@ -97,32 +99,42 @@ void EmuInstance::audioDeInit()
9799 micLock = nullptr ;
98100}
99101
100- void EmuInstance::audioMute ()
102+ void EmuInstance::updateAudioMuteByWindowFocus ()
101103{
102- audioMuted = false ;
104+ audioMutedByWindowFocus = false ;
103105 if (numEmuInstances () < 2 ) return ;
104106
105107 switch (mpAudioMode)
106108 {
107109 case 1 : // only instance 1
108- if (instanceID > 0 ) audioMuted = true ;
110+ if (instanceID > 0 ) audioMutedByWindowFocus = true ;
109111 break ;
110112
111113 case 2 : // only currently focused instance
112- audioMuted = true ;
114+ audioMutedByWindowFocus = true ;
113115 for (int i = 0 ; i < kMaxWindows ; i++)
114116 {
115117 if (!windowList[i]) continue ;
116118 if (windowList[i]->isFocused ())
117119 {
118- audioMuted = false ;
120+ audioMutedByWindowFocus = false ;
119121 break ;
120122 }
121123 }
122124 break ;
123125 }
124126}
125127
128+ void EmuInstance::toggleAudioMute ()
129+ {
130+ audioMutedToggle = !audioMutedToggle;
131+ }
132+
133+ void EmuInstance::updateFastForwardMute (bool fastForward)
134+ {
135+ audioMutedByFastForward = fastForward && globalCfg.GetBool (" MuteFastForward" );
136+ }
137+
126138void EmuInstance::audioSync ()
127139{
128140 if (audioDevice)
@@ -164,7 +176,7 @@ void EmuInstance::audioCallback(void* data, Uint8* stream, int len)
164176 SDL_CondSignal (inst->audioSyncCond );
165177 SDL_UnlockMutex (inst->audioSyncLock );
166178
167- if ((num_in < 1 ) || inst->audioMuted )
179+ if ((num_in < 1 ) || inst->audioMutedByWindowFocus || inst-> audioMutedToggle || inst-> audioMutedByFastForward )
168180 {
169181 memset (stream, 0 , len*sizeof (s16)*2 );
170182 return ;
0 commit comments