diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 0f3894142f..cceeb82d71 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -587,6 +587,8 @@ retry: SAFE_DELETE( pNewScreen ); goto retry; } + + bool bWasOnSystemMenu = GAMESTATE->m_bIsOnSystemMenu; /* If this is a system menu, don't let the operator key touch it! However, if you add an options screen, please include it here -- Miryokuteki */ @@ -603,6 +605,10 @@ retry: GAMESTATE->m_bIsOnSystemMenu = true; else GAMESTATE->m_bIsOnSystemMenu = false; + + // If we're exiting a system menu, persist settings in case we don't exit normally + if( bWasOnSystemMenu && !GAMESTATE->m_bIsOnSystemMenu ) + PREFSMAN->SaveGlobalPrefsToDisk(); LOG->Trace("... SetFromNewScreen"); SetFromNewScreen( pNewScreen, false ); diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 82e0764a17..6bf405fcd2 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -243,9 +243,11 @@ void ResetGame( bool ReturnToFirstScreen ) SCREENMAN->SetNewScreen( FIRST_RUN_INITIAL_SCREEN ); else SCREENMAN->SetNewScreen( INITIAL_SCREEN ); + + PREFSMAN->m_bFirstRun = false; + PREFSMAN->SaveGlobalPrefsToDisk(); // persist FirstRun setting in case we don't exit normally } - PREFSMAN->m_bFirstRun = false; } static void GameLoop();