Separate debug pausing from savestates and recording frame advance

This commit is contained in:
refractionpcsx2 2020-05-02 04:29:12 +01:00
parent 1939671e7f
commit 939e576df9
6 changed files with 20 additions and 8 deletions

View File

@ -174,7 +174,7 @@ void DebugInterface::pauseCpu()
{
SysCoreThread& core = GetCoreThread();
if (!core.IsPaused())
core.Pause();
core.Pause(true);
}
void DebugInterface::resumeCpu()

View File

@ -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();
}

View File

@ -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();

View File

@ -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();
}

View File

@ -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();

View File

@ -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");