From c51c661fdd169a35fc4d87ffb4ec5b0d39b3909d Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 22 Aug 2004 21:42:28 +0000 Subject: [PATCH] fix cases where prefs aren't persisted in case of power loss --- stepmania/src/ScreenManager.cpp | 6 ++++++ stepmania/src/StepMania.cpp | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) 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();