fix up framestep too

This commit is contained in:
Arisotura
2024-06-14 23:04:12 +02:00
parent 0cac63811a
commit 32a5aa07ba
2 changed files with 12 additions and 5 deletions

View File

@ -461,10 +461,10 @@ void EmuThread::sendMessage(Message msg)
msgMutex.unlock(); msgMutex.unlock();
} }
void EmuThread::waitMessage() void EmuThread::waitMessage(int num)
{ {
if (QThread::currentThread() == this) return; if (QThread::currentThread() == this) return;
msgSemaphore.acquire(); msgSemaphore.acquire(num);
} }
void EmuThread::waitAllMessages() void EmuThread::waitAllMessages()
@ -537,6 +537,10 @@ void EmuThread::handleMessages()
emit windowEmuStop(); emit windowEmuStop();
break; break;
case msg_EmuFrameStep:
emuStatus = emuStatus_FrameStep;
break;
case msg_InitGL: case msg_InitGL:
emuInstance->initOpenGL(); emuInstance->initOpenGL();
useOpenGL = true; useOpenGL = true;
@ -610,8 +614,10 @@ void EmuThread::emuExit()
void EmuThread::emuFrameStep() void EmuThread::emuFrameStep()
{ {
//if (emuPauseStack < emuPauseStackPauseThreshold) emit windowEmuPause(); if (emuPauseStack < emuPauseStackPauseThreshold)
emuStatus = emuStatus_FrameStep; sendMessage(msg_EmuPause);
sendMessage(msg_EmuFrameStep);
waitAllMessages();
} }
bool EmuThread::emuIsRunning() bool EmuThread::emuIsRunning()

View File

@ -63,6 +63,7 @@ public:
msg_EmuPause, msg_EmuPause,
msg_EmuUnpause, msg_EmuUnpause,
msg_EmuStop, msg_EmuStop,
msg_EmuFrameStep,
msg_InitGL, msg_InitGL,
msg_DeInitGL, msg_DeInitGL,
@ -78,7 +79,7 @@ public:
}; };
void sendMessage(Message msg); void sendMessage(Message msg);
void waitMessage(); void waitMessage(int num = 1);
void waitAllMessages(); void waitAllMessages();
void sendMessage(MessageType type) void sendMessage(MessageType type)