From 9013096624270d503da2fce41b360bff1bff3381 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Mon, 21 Apr 2014 13:56:05 -0400 Subject: [PATCH] Fix crash when changing display mode --- osx/boe.dlgutil.cpp | 4 ++-- osx/boe.graphics.cpp | 1 + osx/boe.main.cpp | 8 ++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/osx/boe.dlgutil.cpp b/osx/boe.dlgutil.cpp index 1415f0f8..6bac6e3b 100644 --- a/osx/boe.dlgutil.cpp +++ b/osx/boe.dlgutil.cpp @@ -41,7 +41,7 @@ extern short stat_window; extern eGameMode overall_mode; //extern current_town_type univ.town; //extern party_record_type party; -extern bool play_sounds,give_intro_hint,show_startup_splash; +extern bool play_sounds,give_intro_hint,show_startup_splash,changed_display_mode; extern sf::RenderWindow mainPtr; extern RECT d_rects[80]; extern short d_rect_index[80]; @@ -1252,7 +1252,7 @@ void pick_preferences() prefsDlog.run(); if(display_mode != store_display_mode) - adjust_window_mode(); + changed_display_mode = true; } static void put_party_stats(cDialog& me) diff --git a/osx/boe.graphics.cpp b/osx/boe.graphics.cpp index eabc5fc6..8517c76c 100644 --- a/osx/boe.graphics.cpp +++ b/osx/boe.graphics.cpp @@ -193,6 +193,7 @@ void adjust_window_mode() } } + redraw_screen(REFRESH_NONE); if (text_sbar != NULL) { text_sbar->relocate({ul.x + 546,ul.y + 283}); item_sbar->relocate({ul.x + 546,ul.y + 146}); diff --git a/osx/boe.main.cpp b/osx/boe.main.cpp index eb057317..72fef969 100644 --- a/osx/boe.main.cpp +++ b/osx/boe.main.cpp @@ -91,7 +91,7 @@ bool fast_bang = false; short spec_item_array[60]; short current_spell_range; eGameMode overall_mode = MODE_STARTUP; -bool first_update = true,anim_onscreen = false,frills_on = true,sys_7_avail,suppress_stat_screen = false; +bool first_update = true,anim_onscreen = false,frills_on = true,changed_display_mode = false,suppress_stat_screen = false; short stat_window = 0,store_modifier; bool monsters_going = false,boom_anim_active = false; short give_delays = 0; @@ -159,9 +159,9 @@ int main(int argc, char* argv[]) { init_directories(argv[0]); //data_store = (piles_of_stuff_dumping_type *) NewPtr(sizeof(piles_of_stuff_dumping_type)); init_menubar(); // Do this first of all because otherwise a default File and Window menu will be seen + init_graph_tool(); Initialize(); init_fileio(); - init_graph_tool(); init_buf(); @@ -313,6 +313,10 @@ void Handle_One_Event() makeFrontWindow(mainPtr); } if(!mainPtr.pollEvent(event)) { + if(changed_display_mode) { + changed_display_mode = false; + adjust_window_mode(); + } flushingInput = false; mainPtr.display(); return;