# HG changeset patch # User rubidium # Date 1313930926 0 # Node ID 5302cd55d67678e03b2786f997859cc6e99e9416 # Parent 6bba1c18478c7332111bb27a78c11bef5ba8fb66 (svn r22788) -Codechange: move modal progress related functions and variables to progress.cpp/h diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj --- a/projects/openttd_vs100.vcxproj +++ b/projects/openttd_vs100.vcxproj @@ -343,6 +343,7 @@ + @@ -514,6 +515,7 @@ + diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters --- a/projects/openttd_vs100.vcxproj.filters +++ b/projects/openttd_vs100.vcxproj.filters @@ -249,6 +249,9 @@ Source Files + + Source Files + Source Files @@ -762,6 +765,9 @@ Header Files + + Header Files + Header Files diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -643,6 +643,10 @@ > + + @@ -1331,6 +1335,10 @@ > + + diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -640,6 +640,10 @@ > + + @@ -1328,6 +1332,10 @@ > + + diff --git a/source.list b/source.list --- 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 diff --git a/src/genworld.cpp b/src/genworld.cpp --- 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; diff --git a/src/genworld.h b/src/genworld.h --- 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 */ diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp --- 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 --- 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 --- 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 --- 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 --- /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 . + */ + +/** @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 --- /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 . + */ + +/** @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 --- 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 --- 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"