fix sound buffering bugs and restore hookups for mute frameadvance option
This commit is contained in:
parent
ae11756cf0
commit
0f9c38f50b
|
@ -181,13 +181,11 @@ namespace BizHawk.MultiClient
|
|||
private void PauseEmulator()
|
||||
{
|
||||
EmulatorPaused = true;
|
||||
Global.Sound.StopSound();
|
||||
}
|
||||
|
||||
private void UnpauseEmulator()
|
||||
{
|
||||
EmulatorPaused = false;
|
||||
Global.Sound.StartSound();
|
||||
}
|
||||
|
||||
private void LoadRomFromRecent(string rom)
|
||||
|
@ -620,14 +618,23 @@ namespace BizHawk.MultiClient
|
|||
runFrame = true;
|
||||
}
|
||||
|
||||
bool genSound = false;
|
||||
if (runFrame)
|
||||
{
|
||||
CaptureRewindState();
|
||||
if (!runloop_frameadvance) genSound = true;
|
||||
else if (!Global.Config.MuteFrameAdvance)
|
||||
genSound = true;
|
||||
Global.Emulator.FrameAdvance(!throttle.skipnextframe);
|
||||
Global.Sound.UpdateSound(Global.Emulator.SoundProvider);
|
||||
RamWatch1.UpdateValues();
|
||||
RamSearch1.UpdateValues();
|
||||
}
|
||||
|
||||
if(genSound)
|
||||
Global.Sound.UpdateSound(Global.Emulator.SoundProvider);
|
||||
else
|
||||
Global.Sound.UpdateSound(new NullEmulator()); //generates silence
|
||||
|
||||
}
|
||||
|
||||
private void TakeScreenshot()
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace BizHawk.MultiClient
|
|||
if (disposed) throw new ObjectDisposedException("Sound");
|
||||
if (SoundEnabled == false) return;
|
||||
|
||||
if ((DSoundBuffer.Status & BufferStatus.Playing) != 0)
|
||||
if(IsPlaying)
|
||||
return;
|
||||
|
||||
DSoundBuffer.Write(SoundBuffer, 0, LockFlags.EntireBuffer);
|
||||
|
@ -55,9 +55,19 @@ namespace BizHawk.MultiClient
|
|||
DSoundBuffer.Play(0, PlayFlags.Looping);
|
||||
}
|
||||
|
||||
public void StopSound()
|
||||
bool IsPlaying
|
||||
{
|
||||
get
|
||||
{
|
||||
if (DSoundBuffer == null) return false;
|
||||
if ((DSoundBuffer.Status & BufferStatus.Playing) != 0) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void StopSound()
|
||||
{
|
||||
if ((DSoundBuffer.Status & BufferStatus.Playing) ==0)
|
||||
if(!IsPlaying)
|
||||
return;
|
||||
for (int i = 0; i < SoundBuffer.Length; i++)
|
||||
SoundBuffer[i] = 0;
|
||||
|
|
Loading…
Reference in New Issue