From 0da27cad756642dc887035e1d9522d7cb3ba1176 Mon Sep 17 00:00:00 2001 From: Kyzentun Keeslala Date: Thu, 14 Jan 2016 16:48:52 -0700 Subject: [PATCH] Make the DisplayResolution option row deal with caching the resolution list, so it only happens on screens that use it. --- src/ScreenOptionsMasterPrefs.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ScreenOptionsMasterPrefs.cpp b/src/ScreenOptionsMasterPrefs.cpp index dee5ad3910..bf66999c67 100644 --- a/src/ScreenOptionsMasterPrefs.cpp +++ b/src/ScreenOptionsMasterPrefs.cpp @@ -251,12 +251,15 @@ static void ThemeChoices( vector &out ) static DisplayResolutions display_resolution_list; static void cache_display_resolution_list() { - display_resolution_list.clear(); - DISPLAY->GetDisplayResolutions(display_resolution_list); + if(display_resolution_list.empty()) + { + DISPLAY->GetDisplayResolutions(display_resolution_list); + } } static void DisplayResolutionChoices( vector &out ) { + cache_display_resolution_list(); FOREACHS_CONST( DisplayResolution, display_resolution_list, iter ) { RString s = ssprintf("%dx%d", iter->iWidth, iter->iHeight); @@ -582,6 +585,7 @@ static void DisplayResolutionM( int &sel, bool ToSel, const ConfOption *pConfOpt if(res_choices.empty()) { + cache_display_resolution_list(); FOREACHS_CONST(DisplayResolution, display_resolution_list, iter) { res_choices.push_back(res_t(iter->iWidth, iter->iHeight)); @@ -706,7 +710,10 @@ static void InitializeConfOptions() if( !g_ConfOptions.empty() ) return; - cache_display_resolution_list(); + // Clear the display_resolution_list so that we don't get problems from + // caching it. If the DisplayResolution option row is on the screen, it'll + // recache the list. -Kyz + display_resolution_list.clear(); // There are a couple ways of getting the current preference column or turning // a new choice in the interface into a new preference. The easiest is when