diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/frontend/qt_sdl/main.cpp | 11 | ||||
-rw-r--r-- | src/frontend/qt_sdl/main.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp index 47b3490..4f90ebe 100644 --- a/src/frontend/qt_sdl/main.cpp +++ b/src/frontend/qt_sdl/main.cpp @@ -255,6 +255,7 @@ EmuThread::EmuThread(QObject* parent) : QThread(parent) { EmuStatus = 0; EmuRunning = 2; + EmuPause = 0; RunningSomething = false; connect(this, SIGNAL(windowUpdate()), mainWindow->panel, SLOT(update())); @@ -564,6 +565,7 @@ void EmuThread::changeWindowTitle(char* title) void EmuThread::emuRun() { EmuRunning = 1; + EmuPause = 0; RunningSomething = true; // checkme @@ -574,6 +576,9 @@ void EmuThread::emuRun() void EmuThread::emuPause() { + EmuPause++; + if (EmuPause > 1) return; + PrevEmuStatus = EmuRunning; EmuRunning = 2; while (EmuStatus != 2); @@ -584,6 +589,11 @@ void EmuThread::emuPause() void EmuThread::emuUnpause() { + if (EmuPause < 1) return; + + EmuPause--; + if (EmuPause > 0) return; + EmuRunning = PrevEmuStatus; if (audioDevice) SDL_PauseAudioDevice(audioDevice, 0); @@ -593,6 +603,7 @@ void EmuThread::emuUnpause() void EmuThread::emuStop() { EmuRunning = 0; + EmuPause = 0; if (audioDevice) SDL_PauseAudioDevice(audioDevice, 1); if (micDevice) SDL_PauseAudioDevice(micDevice, 1); diff --git a/src/frontend/qt_sdl/main.h b/src/frontend/qt_sdl/main.h index eec2a48..7f33973 100644 --- a/src/frontend/qt_sdl/main.h +++ b/src/frontend/qt_sdl/main.h @@ -74,6 +74,7 @@ private: volatile int EmuStatus; int PrevEmuStatus; int EmuRunning; + int EmuPause; QOffscreenSurface* oglSurface; QOpenGLContext* oglContext; |