Qt: Fix race condition when a game crashes immediately

This commit is contained in:
Jeffrey Pfau 2015-01-04 19:01:26 -08:00
parent 811ad23e61
commit 98a6510b92
2 changed files with 11 additions and 3 deletions

View File

@ -39,6 +39,7 @@ Bugfixes:
- GBA Video: Fix sprite boundary conditions with mosaic
- Video: Fix FFmpeg crashing when the file extension is wrong
- GBA Audio: Fix GB audio channels being too quiet (fixes #159)
- Qt: Fix a race condition when a game crashes immediately
Misc:
- Qt: Disable sync to video by default
- GBA: Exit cleanly on FATAL if the port supports it

View File

@ -332,13 +332,20 @@ void Window::toggleFullScreen() {
}
void Window::gameStarted(GBAThread* context) {
emit startDrawing(m_controller->drawContext(), context);
char title[13] = { '\0' };
MutexLock(&context->stateMutex);
if (context->state < THREAD_EXITING) {
emit startDrawing(m_controller->drawContext(), context);
GBAGetGameTitle(context->gba, title);
} else {
MutexUnlock(&context->stateMutex);
return;
}
MutexUnlock(&context->stateMutex);
foreach (QAction* action, m_gameActions) {
action->setDisabled(false);
}
appendMRU(context->fname);
char title[13] = { '\0' };
GBAGetGameTitle(context->gba, title);
setWindowTitle(tr(PROJECT_NAME " - %1").arg(title));
attachWidget(m_display);
m_screenWidget->setScaledContents(true);