diff --git a/pcsx2/DebugTools/DebugInterface.cpp b/pcsx2/DebugTools/DebugInterface.cpp index fa10b533db..74ec069b22 100644 --- a/pcsx2/DebugTools/DebugInterface.cpp +++ b/pcsx2/DebugTools/DebugInterface.cpp @@ -174,7 +174,7 @@ void DebugInterface::pauseCpu() { SysCoreThread& core = GetCoreThread(); if (!core.IsPaused()) - core.Pause(); + core.Pause(true); } void DebugInterface::resumeCpu() diff --git a/pcsx2/System/SysThreadBase.cpp b/pcsx2/System/SysThreadBase.cpp index 97b363c4fa..007c2ed517 100644 --- a/pcsx2/System/SysThreadBase.cpp +++ b/pcsx2/System/SysThreadBase.cpp @@ -124,7 +124,7 @@ void SysThreadBase::Suspend( bool isBlocking ) // The previous suspension state; true if the thread was running or false if it was // closed, not running, or paused. // -void SysThreadBase::Pause() +void SysThreadBase::Pause(bool debug) { if( IsSelf() || !IsRunning() ) return; @@ -143,7 +143,10 @@ void SysThreadBase::Pause() pxAssertDev( m_ExecMode == ExecMode_Pausing, "ExecMode should be nothing other than Pausing..." ); - OnPause(); + if (debug) + OnPauseDebug(); + else + OnPause(); m_sem_event.Post(); } diff --git a/pcsx2/System/SysThreads.h b/pcsx2/System/SysThreads.h index fb95608a48..e045f80bfb 100644 --- a/pcsx2/System/SysThreads.h +++ b/pcsx2/System/SysThreads.h @@ -112,7 +112,7 @@ public: virtual void Suspend( bool isBlocking = true ); virtual void Resume(); - virtual void Pause(); + virtual void Pause(bool debug = false); virtual void PauseSelf(); protected: @@ -123,6 +123,7 @@ protected: // Resume() has a lot of checks and balances to prevent re-entrance and race conditions. virtual void OnResumeReady() {} virtual void OnPause() {} + virtual void OnPauseDebug() {} virtual bool StateCheckInThread(); virtual void OnCleanupInThread(); diff --git a/pcsx2/gui/AppCoreThread.cpp b/pcsx2/gui/AppCoreThread.cpp index ea0319973b..1d1684ba53 100644 --- a/pcsx2/gui/AppCoreThread.cpp +++ b/pcsx2/gui/AppCoreThread.cpp @@ -210,7 +210,13 @@ void AppCoreThread::OnResumeReady() void AppCoreThread::OnPause() { - sApp.PostAppMethod( &Pcsx2App::enterDebugMode ); + //sApp.PostAppMethod( &Pcsx2App::enterDebugMode ); + _parent::OnPause(); +} + +void AppCoreThread::OnPauseDebug() +{ + sApp.PostAppMethod(&Pcsx2App::enterDebugMode); _parent::OnPause(); } diff --git a/pcsx2/gui/AppCoreThread.h b/pcsx2/gui/AppCoreThread.h index f61f4f2e9b..ff04dd5f19 100644 --- a/pcsx2/gui/AppCoreThread.h +++ b/pcsx2/gui/AppCoreThread.h @@ -147,6 +147,7 @@ protected: virtual void OnResumeReady(); virtual void OnPause(); + virtual void OnPauseDebug(); virtual void OnResumeInThread( bool IsSuspended ); virtual void OnSuspendInThread(); virtual void OnCleanupInThread(); diff --git a/pcsx2/gui/Debugger/DisassemblyDialog.cpp b/pcsx2/gui/Debugger/DisassemblyDialog.cpp index 7406df99c8..3ce31cd409 100644 --- a/pcsx2/gui/Debugger/DisassemblyDialog.cpp +++ b/pcsx2/gui/Debugger/DisassemblyDialog.cpp @@ -611,9 +611,10 @@ void DisassemblyDialog::setDebugMode(bool debugMode, bool switchPC) if (debugMode) { - wxBusyInfo wait("Please wait, Reading ELF functions"); - reset(); - wait.~wxBusyInfo(); + { + wxBusyInfo wait("Please wait, Reading ELF functions"); + reset(); + } CBreakPoints::ClearTemporaryBreakPoints(); breakRunButton->SetLabel(L"Run");