changeset 17979:5302cd55d676 draft

(svn r22788) -Codechange: move modal progress related functions and variables to progress.cpp/h
author rubidium <rubidium@openttd.org>
date Sun, 21 Aug 2011 12:48:46 +0000
parents 6bba1c18478c
children 6c4dd98f3490
files projects/openttd_vs100.vcxproj projects/openttd_vs100.vcxproj.filters projects/openttd_vs80.vcproj projects/openttd_vs90.vcproj source.list src/genworld.cpp src/genworld.h src/genworld_gui.cpp src/gfx.cpp src/main_gui.cpp src/openttd.cpp src/progress.cpp src/progress.h src/video/sdl_v.cpp src/window.cpp
diffstat 15 files changed, 102 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/projects/openttd_vs100.vcxproj
+++ b/projects/openttd_vs100.vcxproj
@@ -343,6 +343,7 @@
     <ClCompile Include="..\src\order_backup.cpp" />
     <ClCompile Include="..\src\os_timer.cpp" />
     <ClCompile Include="..\src\pbs.cpp" />
+    <ClCompile Include="..\src\progress.cpp" />
     <ClCompile Include="..\src\rail.cpp" />
     <ClCompile Include="..\src\rev.cpp" />
     <ClCompile Include="..\src\road.cpp" />
@@ -514,6 +515,7 @@
     <ClInclude Include="..\src\order_func.h" />
     <ClInclude Include="..\src\order_type.h" />
     <ClInclude Include="..\src\pbs.h" />
+    <ClInclude Include="..\src\progress.h" />
     <ClInclude Include="..\src\querystring_gui.h" />
     <ClInclude Include="..\src\rail.h" />
     <ClInclude Include="..\src\rail_gui.h" />
--- a/projects/openttd_vs100.vcxproj.filters
+++ b/projects/openttd_vs100.vcxproj.filters
@@ -249,6 +249,9 @@
     <ClCompile Include="..\src\pbs.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\src\progress.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="..\src\rail.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -762,6 +765,9 @@
     <ClInclude Include="..\src\pbs.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\src\progress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="..\src\querystring_gui.h">
       <Filter>Header Files</Filter>
     </ClInclude>
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -643,6 +643,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\progress.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\rail.cpp"
 				>
 			</File>
@@ -1331,6 +1335,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\progress.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\querystring_gui.h"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -640,6 +640,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\progress.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\rail.cpp"
 				>
 			</File>
@@ -1328,6 +1332,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\progress.h"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\querystring_gui.h"
 				>
 			</File>
--- a/source.list
+++ b/source.list
@@ -51,6 +51,7 @@
 order_backup.cpp
 os_timer.cpp
 pbs.cpp
+progress.cpp
 rail.cpp
 rev.cpp
 road.cpp
@@ -247,6 +248,7 @@
 order_func.h
 order_type.h
 pbs.h
+progress.h
 querystring_gui.h
 rail.h
 rail_gui.h
--- a/src/genworld.cpp
+++ b/src/genworld.cpp
@@ -32,6 +32,7 @@
 #include "newgrf.h"
 #include "core/random_func.hpp"
 #include "core/backup_type.hpp"
+#include "progress.h"
 
 #include "table/sprites.h"
 
@@ -54,11 +55,6 @@
  */
 GenWorldInfo _gw;
 
-/** Rights for the performing work. */
-ThreadMutex *_modal_progress_work_mutex = ThreadMutex::New();
-/** Rights for the painting. */
-ThreadMutex *_modal_progress_paint_mutex = ThreadMutex::New();
-
 /** Whether we are generating the map or not. */
 bool _generating_world;
 
@@ -82,7 +78,7 @@
 	if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
 	/* Show all vital windows again, because we have hidden them */
 	if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows();
-	_gw.active   = false;
+	SetModalProgress(false);
 	_gw.proc     = NULL;
 	_gw.abortp   = NULL;
 	_gw.threaded = false;
@@ -280,11 +276,11 @@
  */
 void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_settings)
 {
-	if (_gw.active) return;
+	if (HasModalProgress()) return;
 	_gw.mode   = mode;
 	_gw.size_x = size_x;
 	_gw.size_y = size_y;
-	_gw.active = true;
+	SetModalProgress(true);
 	_gw.abort  = false;
 	_gw.abortp = NULL;
 	_gw.lc     = _local_company;
--- a/src/genworld.h
+++ b/src/genworld.h
@@ -23,7 +23,6 @@
 };
 
 static const uint GENERATE_NEW_SEED = UINT_MAX; ///< Create a new random seed
-static const uint MODAL_PROGRESS_REDRAW_TIMEOUT = 200; ///< Timeout between redraws
 
 /** Modes for GenerateWorld */
 enum GenWorldMode {
@@ -42,7 +41,6 @@
 
 /** Properties of current genworld process */
 struct GenWorldInfo {
-	bool active;           ///< Is generating world active
 	bool abort;            ///< Whether to abort the thread ASAP
 	bool quit_thread;      ///< Do we want to quit the active thread
 	bool threaded;         ///< Whether we run _GenerateWorld threaded
@@ -71,16 +69,6 @@
 	GWP_CLASS_COUNT
 };
 
-/**
- * Check if we are currently in the process of generating a world.
- * @return are we generating world?
- */
-static inline bool HasModalProgress()
-{
-	extern GenWorldInfo _gw;
-	return _gw.active;
-}
-
 /* genworld.cpp */
 bool IsGenerateWorldThreaded();
 void GenerateWorldSetCallback(GWDoneProc *proc);
@@ -101,8 +89,6 @@
 void ShowCreateScenario();
 void StartScenarioEditor();
 
-extern class ThreadMutex *_modal_progress_work_mutex;
-extern class ThreadMutex *_modal_progress_paint_mutex;
 extern bool _generating_world;
 
 #endif /* GENWORLD_H */
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -29,6 +29,7 @@
 #include "settings_func.h"
 #include "core/geometry_func.hpp"
 #include "core/random_func.hpp"
+#include "progress.h"
 
 #include "table/strings.h"
 #include "table/sprites.h"
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -12,7 +12,7 @@
 #include "stdafx.h"
 #include "gfx_func.h"
 #include "fontcache.h"
-#include "genworld.h"
+#include "progress.h"
 #include "zoom_func.h"
 #include "blitter/factory.hpp"
 #include "video/video_driver.hpp"
--- a/src/main_gui.cpp
+++ b/src/main_gui.cpp
@@ -18,7 +18,7 @@
 #include "viewport_func.h"
 #include "command_func.h"
 #include "console_gui.h"
-#include "genworld.h"
+#include "progress.h"
 #include "transparency_gui.h"
 #include "map_func.h"
 #include "sound_func.h"
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -40,6 +40,7 @@
 #include "ai/ai_config.hpp"
 #include "settings_func.h"
 #include "genworld.h"
+#include "progress.h"
 #include "group.h"
 #include "strings_func.h"
 #include "date_func.h"
new file mode 100644
--- /dev/null
+++ b/src/progress.cpp
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/*
+ * This file is part of OpenTTD.
+ * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** @file progress.cpp Functions for modal progress windows. */
+
+#include "stdafx.h"
+#include "progress.h"
+#include "thread/thread.h"
+
+/** Are we in a modal progress or not? */
+bool _in_modal_progress = false;
+/** Rights for the performing work. */
+ThreadMutex *_modal_progress_work_mutex = ThreadMutex::New();
+/** Rights for the painting. */
+ThreadMutex *_modal_progress_paint_mutex = ThreadMutex::New();
+
+/**
+ * Set the modal progress state.
+ * @param state The new state; are we modal or not?
+ */
+void SetModalProgress(bool state)
+{
+	_in_modal_progress = state;
+}
new file mode 100644
--- /dev/null
+++ b/src/progress.h
@@ -0,0 +1,36 @@
+/* $Id$ */
+
+/*
+ * This file is part of OpenTTD.
+ * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+ * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** @file progress.h Functions related to modal progress. */
+
+#ifndef PROGRESS_H
+#define PROGRESS_H
+
+static const uint MODAL_PROGRESS_REDRAW_TIMEOUT = 200; ///< Timeout between redraws
+
+/**
+ * Check if we are currently in a modal progress state.
+ * @return Are we in the modal state?
+ */
+static inline bool HasModalProgress()
+{
+	extern bool _in_modal_progress;
+	return _in_modal_progress;
+}
+
+/**
+ * Set the modal progress state.
+ * @param state The new state; are we modal or not?
+ */
+void SetModalProgress(bool state);
+
+extern class ThreadMutex *_modal_progress_work_mutex;
+extern class ThreadMutex *_modal_progress_paint_mutex;
+
+#endif /* PROGRESS_H */
--- a/src/video/sdl_v.cpp
+++ b/src/video/sdl_v.cpp
@@ -19,7 +19,7 @@
 #include "../blitter/factory.hpp"
 #include "../network/network.h"
 #include "../thread/thread.h"
-#include "../genworld.h"
+#include "../progress.h"
 #include "../core/random_func.hpp"
 #include "../core/math_func.hpp"
 #include "sdl_v.h"
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -17,6 +17,7 @@
 #include "console_gui.h"
 #include "viewport_func.h"
 #include "genworld.h"
+#include "progress.h"
 #include "blitter/factory.hpp"
 #include "zoom_func.h"
 #include "vehicle_base.h"