Fixed crash when loadscreen_manager wasn't initialized like excepted

This commit is contained in:
Pauli Nieminen 2008-06-12 16:05:43 +00:00
parent dd23685755
commit f10b7cd3f5
3 changed files with 11 additions and 5 deletions

View File

@ -179,7 +179,7 @@ namespace game_events
* For [foo] tag macro is used like:
*
* // comment out unused parameters to prevent compiler warnings
* WML_HANDLER_FUNCTION(foo, /*handler * /,/*event_info * /, cfg)
* WML_HANDLER_FUNCTION(foo, handler, event_info, cfg)
* {
* // code for foo
* }

View File

@ -67,8 +67,8 @@ class loadscreen {
struct global_loadscreen_manager {
explicit global_loadscreen_manager(CVideo& screen);
~global_loadscreen_manager();
static global_loadscreen_manager& get()
{ assert(manager); return *manager; }
static global_loadscreen_manager* get()
{ return manager; }
void reset();
private:
static global_loadscreen_manager* manager;

View File

@ -68,7 +68,13 @@ play_controller::~play_controller(){
}
void play_controller::init(CVideo& video, bool is_replay){
loadscreen::global_loadscreen_manager& loadscreen_manager = loadscreen::global_loadscreen_manager::get();
util::scoped_resource<loadscreen::global_loadscreen_manager*, util::delete_item> scoped_loadscreen_manager;
loadscreen::global_loadscreen_manager* loadscreen_manager = loadscreen::global_loadscreen_manager::get();
if (!loadscreen_manager)
{
scoped_loadscreen_manager.assign(new loadscreen::global_loadscreen_manager(video));
loadscreen_manager = scoped_loadscreen_manager.get();
}
// If the recorder has no event, adds an "game start" event
// to the recorder, whose only goal is to initialize the RNG
@ -145,7 +151,7 @@ void play_controller::init(CVideo& video, bool is_replay){
init_managers();
loadscreen::global_loadscreen->set_progress(100, _("Starting game"));
loadscreen_manager.reset();
loadscreen_manager->reset();
}
void play_controller::init_managers(){