From e7caafa45c013c7039a9dbfcc4c026dd7e6b37e2 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 13 Oct 2005 05:18:45 +0000 Subject: [PATCH] Fix screens occasionally being loaded twice. --- stepmania/src/ScreenManager.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 02ffd45de3..17c51b2587 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -616,11 +616,13 @@ void ScreenManager::LoadDelayedScreen() ScreenMessage SM = PopTopScreenInternal(); /* We have a screen to display. Delete the current screens and load it. - * If DelayedScreenLoad is true, delete old screens first; this lowers - * memory requirements, but results in redundant loads as we unload common - * data. */ + * If DelayedScreenLoad is true and the screen isn't already loaded, delete + * old screens first; this lowers memory requirements, but results in + * redundant loads as we unload common data. (If the screen is already + * loaded, then do this cleanup later; otherwise we'll delete the prepared + * screen.) */ bool bTimeToDeleteScreens = (g_setGroupedScreens.find(sScreenName) == g_setGroupedScreens.end()); - if( bTimeToDeleteScreens && PREFSMAN->m_bDelayedScreenLoad ) + if( bTimeToDeleteScreens && PREFSMAN->m_bDelayedScreenLoad && !ScreenIsPrepped(sScreenName) ) { bTimeToDeleteScreens = false; DeletePreparedScreens();