diff options
Diffstat (limited to 'src')
-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 |
10 files changed, 76 insertions, 25 deletions
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" |