|
From: Lasse Kärkkäi. <tr...@us...> - 2011-02-28 19:55:39
|
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 460b2b0..e24a4f2 100644 --- a/game/screenmanager.cc +++ b/game/screenmanager.cc @@ -27,11 +27,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) { |