Branch Watch Tool: Ignore Apploader Branch Hits Concurrency Fix
Also removed worthless `Start` and `Pause` helpers from `Core::BranchWatch`.
This commit is contained in:
parent
e4500b5798
commit
8bdfdc88b2
|
@ -163,7 +163,7 @@ bool CBoot::RunApploader(Core::System& system, const Core::CPUThreadGuard& guard
|
||||||
|
|
||||||
const bool resume_branch_watch = branch_watch.GetRecordingActive();
|
const bool resume_branch_watch = branch_watch.GetRecordingActive();
|
||||||
if (system.IsBranchWatchIgnoreApploader())
|
if (system.IsBranchWatchIgnoreApploader())
|
||||||
branch_watch.Pause();
|
branch_watch.SetRecordingActive(guard, false);
|
||||||
|
|
||||||
// Call iAppLoaderEntry.
|
// Call iAppLoaderEntry.
|
||||||
DEBUG_LOG_FMT(BOOT, "Call iAppLoaderEntry");
|
DEBUG_LOG_FMT(BOOT, "Call iAppLoaderEntry");
|
||||||
|
@ -226,7 +226,7 @@ bool CBoot::RunApploader(Core::System& system, const Core::CPUThreadGuard& guard
|
||||||
// return
|
// return
|
||||||
ppc_state.pc = ppc_state.gpr[3];
|
ppc_state.pc = ppc_state.gpr[3];
|
||||||
|
|
||||||
branch_watch.SetRecordingActive(resume_branch_watch);
|
branch_watch.SetRecordingActive(guard, resume_branch_watch);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,9 +117,7 @@ public:
|
||||||
using SelectionInspection = BranchWatchSelectionInspection;
|
using SelectionInspection = BranchWatchSelectionInspection;
|
||||||
|
|
||||||
bool GetRecordingActive() const { return m_recording_active; }
|
bool GetRecordingActive() const { return m_recording_active; }
|
||||||
void SetRecordingActive(bool active) { m_recording_active = active; }
|
void SetRecordingActive(const CPUThreadGuard& guard, bool active) { m_recording_active = active; }
|
||||||
void Start() { SetRecordingActive(true); }
|
|
||||||
void Pause() { SetRecordingActive(false); }
|
|
||||||
void Clear(const CPUThreadGuard& guard);
|
void Clear(const CPUThreadGuard& guard);
|
||||||
|
|
||||||
void Save(const CPUThreadGuard& guard, std::FILE* file) const;
|
void Save(const CPUThreadGuard& guard, std::FILE* file) const;
|
||||||
|
|
|
@ -516,7 +516,6 @@ BranchWatchDialog::~BranchWatchDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr int BRANCH_WATCH_TOOL_TIMER_DELAY_MS = 100;
|
static constexpr int BRANCH_WATCH_TOOL_TIMER_DELAY_MS = 100;
|
||||||
static constexpr int BRANCH_WATCH_TOOL_TIMER_PAUSE_ONESHOT_MS = 200;
|
|
||||||
|
|
||||||
static bool TimerCondition(const Core::BranchWatch& branch_watch, Core::State state)
|
static bool TimerCondition(const Core::BranchWatch& branch_watch, Core::State state)
|
||||||
{
|
{
|
||||||
|
@ -537,23 +536,18 @@ void BranchWatchDialog::showEvent(QShowEvent* event)
|
||||||
|
|
||||||
void BranchWatchDialog::OnStartPause(bool checked) const
|
void BranchWatchDialog::OnStartPause(bool checked) const
|
||||||
{
|
{
|
||||||
|
m_branch_watch.SetRecordingActive(Core::CPUThreadGuard{m_system}, checked);
|
||||||
if (checked)
|
if (checked)
|
||||||
{
|
{
|
||||||
m_branch_watch.Start();
|
|
||||||
m_btn_start_pause->setText(tr("Pause Branch Watch"));
|
m_btn_start_pause->setText(tr("Pause Branch Watch"));
|
||||||
// Restart the timer if the situation calls for it, but always turn off single-shot.
|
|
||||||
m_timer->setSingleShot(false);
|
|
||||||
if (Core::GetState(m_system) > Core::State::Paused)
|
if (Core::GetState(m_system) > Core::State::Paused)
|
||||||
m_timer->start(BRANCH_WATCH_TOOL_TIMER_DELAY_MS);
|
m_timer->start(BRANCH_WATCH_TOOL_TIMER_DELAY_MS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_branch_watch.Pause();
|
|
||||||
m_btn_start_pause->setText(tr("Start Branch Watch"));
|
m_btn_start_pause->setText(tr("Start Branch Watch"));
|
||||||
// Schedule one last update in the future in case Branch Watch is in the middle of a hit.
|
if (m_timer->isActive())
|
||||||
if (Core::GetState(m_system) > Core::State::Paused)
|
m_timer->stop();
|
||||||
m_timer->setInterval(BRANCH_WATCH_TOOL_TIMER_PAUSE_ONESHOT_MS);
|
|
||||||
m_timer->setSingleShot(true);
|
|
||||||
}
|
}
|
||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue