From afe407322d5b4d4912b0250d1f14810328350e20 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 20 Aug 2011 17:46:03 +0000 Subject: [PATCH] (svn r22771) -Codechange: unify some NewGRFScan calling code --- src/console_cmds.cpp | 1 - src/network/network_content_gui.cpp | 3 -- src/newgrf_config.cpp | 46 ++++++++++++++++------------- src/newgrf_gui.cpp | 2 -- 4 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index e5b8ad7e5d..cf2444aac6 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1269,7 +1269,6 @@ DEF_CONSOLE_CMD(ConRescanNewGRF) TarScanner::DoScan(); ScanNewGRFFiles(); - InvalidateWindowData(WC_GAME_OPTIONS, 0, GOID_NEWGRF_RESCANNED); return true; } diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 50bb8cd143..498ef49180 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -115,9 +115,6 @@ public: case CONTENT_TYPE_NEWGRF: ScanNewGRFFiles(); - /* Yes... these are the NewGRF windows */ - InvalidateWindowClassesData(WC_SAVELOAD); - InvalidateWindowData(WC_GAME_OPTIONS, 0, GOID_NEWGRF_RESCANNED); break; case CONTENT_TYPE_SCENARIO: diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp index 1cde3ab24c..88d1c9128c 100644 --- a/src/newgrf_config.cpp +++ b/src/newgrf_config.cpp @@ -605,33 +605,37 @@ void ScanNewGRFFiles() uint num = GRFFileScanner::DoScan(); DEBUG(grf, 1, "Scan complete, found %d files", num); - if (num == 0 || _all_grfs == NULL) return; - - /* Sort the linked list using quicksort. - * For that we first have to make an array, then sort and - * then remake the linked list. */ - GRFConfig **to_sort = MallocT(num); - - uint i = 0; - for (GRFConfig *p = _all_grfs; p != NULL; p = p->next, i++) { - to_sort[i] = p; - } - /* Number of files is not necessarily right */ - num = i; + if (num != 0 && _all_grfs != NULL) { + /* Sort the linked list using quicksort. + * For that we first have to make an array, then sort and + * then remake the linked list. */ + GRFConfig **to_sort = MallocT(num); + + uint i = 0; + for (GRFConfig *p = _all_grfs; p != NULL; p = p->next, i++) { + to_sort[i] = p; + } + /* Number of files is not necessarily right */ + num = i; - QSortT(to_sort, num, &GRFSorter); + QSortT(to_sort, num, &GRFSorter); - for (i = 1; i < num; i++) { - to_sort[i - 1]->next = to_sort[i]; - } - to_sort[num - 1]->next = NULL; - _all_grfs = to_sort[0]; + for (i = 1; i < num; i++) { + to_sort[i - 1]->next = to_sort[i]; + } + to_sort[num - 1]->next = NULL; + _all_grfs = to_sort[0]; - free(to_sort); + free(to_sort); #ifdef ENABLE_NETWORK - NetworkAfterNewGRFScan(); + NetworkAfterNewGRFScan(); #endif + } + + /* Yes... these are the NewGRF windows */ + InvalidateWindowClassesData(WC_SAVELOAD); + InvalidateWindowData(WC_GAME_OPTIONS, 0, GOID_NEWGRF_RESCANNED); } diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 1623e271e3..9978a2f159 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -989,9 +989,7 @@ struct NewGRFWindow : public QueryStringBaseWindow { this->avail_sel = NULL; this->avail_pos = -1; this->avails.ForceRebuild(); - this->InvalidateData(GOID_NEWGRF_RESCANNED); this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window - InvalidateWindowClassesData(WC_SAVELOAD); break; } }