|
From: Lasse Kärkkäi. <tr...@us...> - 2011-02-28 19:55:32
|
Author: Lasse Kärkkäinen <tronic+ndrm at trn.iki.fi> Date: Mon Feb 28 20:53:29 2011 +0100 Fix a nasty bug in screen switching when song loading fails. --- game/screenmanager.cc | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/game/screenmanager.cc b/game/screenmanager.cc index 8f65292..0aa563c 100644 --- a/game/screenmanager.cc +++ b/game/screenmanager.cc @@ -26,11 +26,12 @@ void ScreenManager::activateScreen(std::string const& name) { void ScreenManager::updateScreen() { if (!newScreen) return; + Screen* s = newScreen; // A local copy in case exit() or enter() want to change screens again + newScreen = NULL; if (currentScreen) currentScreen->exit(); currentScreen = NULL; // Exception safety, do not remove - newScreen->enter(); - currentScreen = newScreen; - newScreen = NULL; + s->enter(); + currentScreen = s; } Screen* ScreenManager::getScreen(std::string const& name) { |