mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
Fixed an identical freeze when switching tracks in a HES file while the debugger is opened
35 lines
717 B
C++
35 lines
717 B
C++
#include "pch.h"
|
|
#include "Shared/EmulatorLock.h"
|
|
#include "Shared/Emulator.h"
|
|
#include "Shared/DebuggerRequest.h"
|
|
#include "Debugger/DebugBreakHelper.h"
|
|
|
|
EmulatorLock::EmulatorLock(Emulator *emu, bool allowDebuggerLock)
|
|
{
|
|
_emu = emu;
|
|
|
|
if(_emu->_runLock.IsLockedByCurrentThread()) {
|
|
_emu->Lock();
|
|
} else {
|
|
if(allowDebuggerLock) {
|
|
_debugger.reset(new DebuggerRequest(emu->GetDebugger(false)));
|
|
if(_debugger->GetDebugger()) {
|
|
_breakHelper.reset(new DebugBreakHelper(_debugger->GetDebugger(), true));
|
|
} else {
|
|
_debugger.reset();
|
|
_emu->Lock();
|
|
}
|
|
} else {
|
|
_emu->Lock();
|
|
}
|
|
}
|
|
}
|
|
|
|
EmulatorLock::~EmulatorLock()
|
|
{
|
|
if(_debugger) {
|
|
_breakHelper.reset();
|
|
} else {
|
|
_emu->Unlock();
|
|
}
|
|
}
|