diff options
-rw-r--r-- | projects/openttd_vs100.vcxproj | 2 | ||||
-rw-r--r-- | projects/openttd_vs100.vcxproj.filters | 6 | ||||
-rw-r--r-- | projects/openttd_vs80.vcproj | 8 | ||||
-rw-r--r-- | projects/openttd_vs90.vcproj | 8 | ||||
-rw-r--r-- | source.list | 2 | ||||
-rw-r--r-- | src/genworld.cpp | 12 | ||||
-rw-r--r-- | src/genworld.h | 14 | ||||
-rw-r--r-- | src/genworld_gui.cpp | 1 | ||||
-rw-r--r-- | src/gfx.cpp | 2 | ||||
-rw-r--r-- | src/main_gui.cpp | 2 | ||||
-rw-r--r-- | src/openttd.cpp | 1 | ||||
-rw-r--r-- | src/progress.cpp | 30 | ||||
-rw-r--r-- | src/progress.h | 36 | ||||
-rw-r--r-- | src/video/sdl_v.cpp | 2 | ||||
-rw-r--r-- | src/window.cpp | 1 |
15 files changed, 102 insertions, 25 deletions
diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj index a0e8d5881..3d624d83c 100644 --- 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" /> diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters index bc0b7b6a3..f51ed0229 100644 --- 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> diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index e15d2c84d..121c539e2 100644 --- 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> diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj index 023fea1af..92f1a8eba 100644 --- 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> diff --git a/source.list b/source.list index c8aace0e8..610a4e5c1 100644 --- a/source.list +++ b/source.list @@ -51,6 +51,7 @@ openttd.cpp order_backup.cpp os_timer.cpp pbs.cpp +progress.cpp rail.cpp rev.cpp road.cpp @@ -247,6 +248,7 @@ order_base.h order_func.h order_type.h pbs.h +progress.h querystring_gui.h rail.h rail_gui.h diff --git a/src/genworld.cpp b/src/genworld.cpp index 3c6709295..d4f2746fb 100644 --- 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 @@ void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settin */ 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 @@ static void CleanupGeneration() 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 HandleGeneratingWorldAbortion() */ 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; diff --git a/src/genworld.h b/src/genworld.h index ed57d103d..4814e7d8b 100644 --- a/src/genworld.h +++ b/src/genworld.h @@ -23,7 +23,6 @@ enum LandscapeGenerator { }; 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 @@ typedef void GWAbortProc(); ///< Called when genworld is aborted /** 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 @@ enum GenWorldProgress { 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 StartNewGameWithoutGUI(uint seed); 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 */ diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index 07210de57..907b91d22 100644 --- 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" diff --git a/src/gfx.cpp b/src/gfx.cpp index c08801467..b8c19f9b1 100644 --- 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" diff --git a/src/main_gui.cpp b/src/main_gui.cpp index 793ef7750..14132cbba 100644 --- 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" diff --git a/src/openttd.cpp b/src/openttd.cpp index 9ea00405f..15f2356ea 100644 --- 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" diff --git a/src/progress.cpp b/src/progress.cpp new file mode 100644 index 000000000..ac34afd07 --- /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; +} diff --git a/src/progress.h b/src/progress.h new file mode 100644 index 000000000..dd4f32420 --- /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 */ diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index a27866b84..f5389ea55 100644 --- 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" diff --git a/src/window.cpp b/src/window.cpp index b20a46004..fec88ce7d 100644 --- 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" |