Fixes Issue 2004
This also mutes the sound when paused in Debug mode. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4825 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
429691ce96
commit
5aac8a5437
|
@ -490,13 +490,9 @@ void SetState(EState _State)
|
|||
break;
|
||||
case CORE_PAUSE:
|
||||
CCPU::EnableStepping(true); // Break
|
||||
CPluginManager::GetInstance().GetDSP()->DSP_ClearAudioBuffer();
|
||||
CPluginManager::GetInstance().EmuStateChange(PLUGIN_EMUSTATE_PAUSE);
|
||||
break;
|
||||
case CORE_RUN:
|
||||
CCPU::EnableStepping(false);
|
||||
CPluginManager::GetInstance().GetDSP()->DSP_ClearAudioBuffer();
|
||||
CPluginManager::GetInstance().EmuStateChange(PLUGIN_EMUSTATE_PLAY);
|
||||
break;
|
||||
default:
|
||||
PanicAlert("Invalid state");
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "Common.h"
|
||||
#include "Thread.h"
|
||||
|
||||
#include "../PluginManager.h"
|
||||
#include "../PowerPC/PowerPC.h"
|
||||
#include "../Host.h"
|
||||
#include "../Core.h"
|
||||
|
@ -117,12 +118,14 @@ void CCPU::EnableStepping(const bool _bStepping)
|
|||
PowerPC::Pause();
|
||||
// TODO(ector): why a sleep?
|
||||
Host_SetDebugMode(true);
|
||||
CPluginManager::GetInstance().EmuStateChange(PLUGIN_EMUSTATE_PAUSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
Host_SetDebugMode(false);
|
||||
PowerPC::Start();
|
||||
m_StepEvent.Set();
|
||||
CPluginManager::GetInstance().EmuStateChange(PLUGIN_EMUSTATE_PLAY);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ EXPORT void CALL DSP_StopSoundStream();
|
|||
// __________________________________________________________________________________________________
|
||||
// Function: DSP_ClearAudioBuffer
|
||||
// Purpose: Stops audio. Called while pausing to stop the annoying noises.
|
||||
EXPORT void CALL DSP_ClearAudioBuffer();
|
||||
EXPORT void CALL DSP_ClearAudioBuffer(bool mute);
|
||||
|
||||
#include "ExportEpilog.h"
|
||||
#endif
|
||||
|
|
|
@ -245,6 +245,7 @@ void DoState(unsigned char **ptr, int mode)
|
|||
|
||||
void EmuStateChange(PLUGIN_EMUSTATE newState)
|
||||
{
|
||||
DSP_ClearAudioBuffer((newState == PLUGIN_EMUSTATE_PLAY) ? false : true);
|
||||
}
|
||||
|
||||
// Mailbox fuctions
|
||||
|
@ -356,8 +357,8 @@ void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples)
|
|||
soundStream->Update();
|
||||
}
|
||||
|
||||
void DSP_ClearAudioBuffer()
|
||||
void DSP_ClearAudioBuffer(bool mute)
|
||||
{
|
||||
if (soundStream)
|
||||
soundStream->Clear(!!*g_dspInitialize.pEmulatorState);
|
||||
soundStream->Clear(mute);
|
||||
}
|
||||
|
|
|
@ -192,6 +192,7 @@ void DoState(unsigned char **ptr, int mode)
|
|||
|
||||
void EmuStateChange(PLUGIN_EMUSTATE newState)
|
||||
{
|
||||
DSP_ClearAudioBuffer((newState == PLUGIN_EMUSTATE_PLAY) ? false : true);
|
||||
}
|
||||
|
||||
void DllDebugger(HWND _hParent, bool Show)
|
||||
|
@ -400,9 +401,9 @@ void DSP_SendAIBuffer(unsigned int address, unsigned int num_samples)
|
|||
soundStream->Update();
|
||||
}
|
||||
|
||||
void DSP_ClearAudioBuffer()
|
||||
void DSP_ClearAudioBuffer(bool mute)
|
||||
{
|
||||
if (soundStream)
|
||||
soundStream->Clear((*g_dspInitialize.pEmulatorState) ? true : false);
|
||||
soundStream->Clear(mute);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue