summaryrefslogtreecommitdiff
path: root/src/newgrf_config.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-08-20 17:46:03 +0000
committerrubidium <rubidium@openttd.org>2011-08-20 17:46:03 +0000
commit327c5dd10c5bf85ee986285979f8505024d19d89 (patch)
treea5ac828e2d2a15d8baf1a7dcae34d5db52c3e6f2 /src/newgrf_config.cpp
parent66bab6aeff0c731b400d341a20a36b590499a010 (diff)
downloadopenttd-327c5dd10c5bf85ee986285979f8505024d19d89.tar.xz
(svn r22771) -Codechange: unify some NewGRFScan calling code
Diffstat (limited to 'src/newgrf_config.cpp')
-rw-r--r--src/newgrf_config.cpp46
1 files changed, 25 insertions, 21 deletions
diff --git a/src/newgrf_config.cpp b/src/newgrf_config.cpp
index 1cde3ab24..88d1c9128 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<GRFConfig*>(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<GRFConfig*>(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);
}