flush before deleting screens
This commit is contained in:
@@ -152,9 +152,15 @@ namespace
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BeforeDeleteScreen()
|
||||||
|
{
|
||||||
|
/* Deleting a screen can take enough time to cause a frame skip. */
|
||||||
|
SCREENMAN->ZeroNextUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
/* If we're deleting a screen, it's probably releasing texture and other
|
/* If we're deleting a screen, it's probably releasing texture and other
|
||||||
* resources, so trigger cleanups. */
|
* resources, so trigger cleanups. */
|
||||||
void AfterDeletingScreen()
|
void AfterDeleteScreen()
|
||||||
{
|
{
|
||||||
/* Now that we've actually deleted a screen, it makes sense to clear out
|
/* Now that we've actually deleted a screen, it makes sense to clear out
|
||||||
* cached textures. */
|
* cached textures. */
|
||||||
@@ -169,6 +175,8 @@ namespace
|
|||||||
* reset the screen group and list of persistant screens. */
|
* reset the screen group and list of persistant screens. */
|
||||||
void DeletePreparedScreens()
|
void DeletePreparedScreens()
|
||||||
{
|
{
|
||||||
|
BeforeDeleteScreen();
|
||||||
|
|
||||||
FOREACH( LoadedScreen, g_vPreparedScreens, s )
|
FOREACH( LoadedScreen, g_vPreparedScreens, s )
|
||||||
{
|
{
|
||||||
if( s->m_bDeleteWhenDone )
|
if( s->m_bDeleteWhenDone )
|
||||||
@@ -182,7 +190,7 @@ namespace
|
|||||||
g_setGroupedScreens.clear();
|
g_setGroupedScreens.clear();
|
||||||
g_setPersistantScreens.clear();
|
g_setPersistantScreens.clear();
|
||||||
|
|
||||||
AfterDeletingScreen();
|
AfterDeleteScreen();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -291,8 +299,9 @@ ScreenMessage ScreenManager::PopTopScreenInternal()
|
|||||||
{
|
{
|
||||||
if( ls.m_bDeleteWhenDone )
|
if( ls.m_bDeleteWhenDone )
|
||||||
{
|
{
|
||||||
|
BeforeDeleteScreen();
|
||||||
SAFE_DELETE( ls.m_pScreen );
|
SAFE_DELETE( ls.m_pScreen );
|
||||||
AfterDeletingScreen();
|
AfterDeleteScreen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user