diff options
author | Eugene Sandulenko | 2017-07-10 21:17:41 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2017-07-10 21:17:41 +0200 |
commit | 940b2a20f1cd490afb6e541a3cd26f0d3bdd1687 (patch) | |
tree | ed080d2edfcc191e2edd4ad61cb8e778e660d422 | |
parent | c61c0cb0ff6edb53d2ff32efa559e76dd4d086ec (diff) | |
download | scummvm-rg350-940b2a20f1cd490afb6e541a3cd26f0d3bdd1687.tar.gz scummvm-rg350-940b2a20f1cd490afb6e541a3cd26f0d3bdd1687.tar.bz2 scummvm-rg350-940b2a20f1cd490afb6e541a3cd26f0d3bdd1687.zip |
Revert "COMMON: Change way the Singleton instances are instantiated"
This reverts commit eefa72afa1978a9dea10f5b1833fcc8f58a3468e.
With this patch ConfigManager is broken.
36 files changed, 138 insertions, 1 deletions
diff --git a/backends/cloud/cloudmanager.cpp b/backends/cloud/cloudmanager.cpp index 549926881d..5519e4baab 100644 --- a/backends/cloud/cloudmanager.cpp +++ b/backends/cloud/cloudmanager.cpp @@ -32,6 +32,11 @@ #include "backends/networking/sdl_net/localwebserver.h" #endif +namespace Common { + +DECLARE_SINGLETON(Cloud::CloudManager); + +} namespace Cloud { diff --git a/backends/fs/ds/ds-fs-factory.cpp b/backends/fs/ds/ds-fs-factory.cpp index e99033eebd..98c522f1d6 100644 --- a/backends/fs/ds/ds-fs-factory.cpp +++ b/backends/fs/ds/ds-fs-factory.cpp @@ -28,6 +28,9 @@ #include "backends/fs/ds/ds-fs.h" #include "dsmain.h" //for the isGBAMPAvailable() function +namespace Common { +DECLARE_SINGLETON(DSFilesystemFactory); +} AbstractFSNode *DSFilesystemFactory::makeRootFileNode() const { if (DS::isGBAMPAvailable()) { diff --git a/backends/fs/ps2/ps2-fs-factory.cpp b/backends/fs/ps2/ps2-fs-factory.cpp index 93525eba1a..9c12d27a6e 100644 --- a/backends/fs/ps2/ps2-fs-factory.cpp +++ b/backends/fs/ps2/ps2-fs-factory.cpp @@ -28,6 +28,10 @@ #include "backends/fs/ps2/ps2-fs-factory.h" #include "backends/fs/ps2/ps2-fs.h" +namespace Common { +DECLARE_SINGLETON(Ps2FilesystemFactory); +} + AbstractFSNode *Ps2FilesystemFactory::makeRootFileNode() const { return new Ps2FilesystemNode(); } diff --git a/backends/fs/psp/psp-fs-factory.cpp b/backends/fs/psp/psp-fs-factory.cpp index fa92bf42d1..303ea242c5 100644 --- a/backends/fs/psp/psp-fs-factory.cpp +++ b/backends/fs/psp/psp-fs-factory.cpp @@ -44,6 +44,10 @@ #include <unistd.h> +namespace Common { +DECLARE_SINGLETON(PSPFilesystemFactory); +} + AbstractFSNode *PSPFilesystemFactory::makeRootFileNode() const { return new PSPFilesystemNode(); } diff --git a/backends/fs/wii/wii-fs-factory.cpp b/backends/fs/wii/wii-fs-factory.cpp index 1c95e4e42f..f234c1e300 100644 --- a/backends/fs/wii/wii-fs-factory.cpp +++ b/backends/fs/wii/wii-fs-factory.cpp @@ -43,6 +43,10 @@ #include <smb.h> #endif +namespace Common { +DECLARE_SINGLETON(WiiFilesystemFactory); +} + WiiFilesystemFactory::WiiFilesystemFactory() : _dvdMounted(false), _smbMounted(false), diff --git a/backends/graphics/opengl/shader.cpp b/backends/graphics/opengl/shader.cpp index b405f3d102..0b4c677d70 100644 --- a/backends/graphics/opengl/shader.cpp +++ b/backends/graphics/opengl/shader.cpp @@ -27,6 +27,10 @@ #include "common/textconsole.h" #include "common/util.h" +namespace Common { +DECLARE_SINGLETON(OpenGL::ShaderManager); +} + namespace OpenGL { namespace { diff --git a/backends/networking/curl/connectionmanager.cpp b/backends/networking/curl/connectionmanager.cpp index dee4ece742..d8662ab78d 100644 --- a/backends/networking/curl/connectionmanager.cpp +++ b/backends/networking/curl/connectionmanager.cpp @@ -29,6 +29,12 @@ #include "common/timer.h" #include <curl/curl.h> +namespace Common { + +DECLARE_SINGLETON(Networking::ConnectionManager); + +} + namespace Networking { ConnectionManager::ConnectionManager(): _multi(0), _timerStarted(false), _frame(0) { diff --git a/backends/networking/sdl_net/localwebserver.cpp b/backends/networking/sdl_net/localwebserver.cpp index 558bffec26..836b90a244 100644 --- a/backends/networking/sdl_net/localwebserver.cpp +++ b/backends/networking/sdl_net/localwebserver.cpp @@ -51,6 +51,9 @@ namespace Common { class MemoryReadWriteStream; + +DECLARE_SINGLETON(Networking::LocalWebserver); + } namespace Networking { diff --git a/backends/platform/psp/display_manager.cpp b/backends/platform/psp/display_manager.cpp index ffd37414be..2e995c809e 100644 --- a/backends/platform/psp/display_manager.cpp +++ b/backends/platform/psp/display_manager.cpp @@ -62,6 +62,10 @@ const OSystem::GraphicsMode DisplayManager::_supportedModes[] = { // Class VramAllocator ----------------------------------- +namespace Common { +DECLARE_SINGLETON(VramAllocator); +} + //#define __PSP_DEBUG_FUNCS__ /* For debugging the stack */ //#define __PSP_DEBUG_PRINT__ diff --git a/backends/platform/psp/powerman.cpp b/backends/platform/psp/powerman.cpp index 4b415ef50e..3cd663e3c7 100644 --- a/backends/platform/psp/powerman.cpp +++ b/backends/platform/psp/powerman.cpp @@ -30,6 +30,10 @@ //#define __PSP_DEBUG_PRINT__ #include "backends/platform/psp/trace.h" +namespace Common { +DECLARE_SINGLETON(PowerManager); +} + // Function to debug the Power Manager (we have no output to screen) inline void PowerManager::debugPM() { PSP_DEBUG_PRINT("PM status[%d]. Listcount[%d]. CriticalCount[%d]. ThreadId[%x]. Error[%d]\n", diff --git a/backends/platform/psp/rtc.cpp b/backends/platform/psp/rtc.cpp index 67ad36c334..d01bd8f83a 100644 --- a/backends/platform/psp/rtc.cpp +++ b/backends/platform/psp/rtc.cpp @@ -34,6 +34,9 @@ // Class PspRtc --------------------------------------------------------------- +namespace Common { +DECLARE_SINGLETON(PspRtc); +} void PspRtc::init() { // init our starting ticks uint32 ticks[2]; diff --git a/backends/plugins/elf/memory-manager.cpp b/backends/plugins/elf/memory-manager.cpp index 7be79434bf..5014718ae8 100644 --- a/backends/plugins/elf/memory-manager.cpp +++ b/backends/plugins/elf/memory-manager.cpp @@ -29,6 +29,10 @@ #include "common/util.h" #include <malloc.h> +namespace Common { +DECLARE_SINGLETON(ELFMemoryManager); +} + ELFMemoryManager::ELFMemoryManager() : _heap(0), _heapSize(0), _heapAlign(0), _trackAllocs(false), _measuredSize(0), _measuredAlign(0), diff --git a/backends/plugins/elf/shorts-segment-manager.cpp b/backends/plugins/elf/shorts-segment-manager.cpp index 2af6c10e0f..4fa03cc79c 100644 --- a/backends/plugins/elf/shorts-segment-manager.cpp +++ b/backends/plugins/elf/shorts-segment-manager.cpp @@ -33,6 +33,10 @@ extern char __plugin_hole_start; // Indicates start of hole in program file for extern char __plugin_hole_end; // Indicates end of hole in program file extern char _gp[]; // Value of gp register +namespace Common { +DECLARE_SINGLETON(ShortSegmentManager); // For singleton +} + ShortSegmentManager::ShortSegmentManager() { _shortsStart = &__plugin_hole_start ; //shorts segment begins at the plugin hole we made when linking _shortsEnd = &__plugin_hole_end; //and ends at the end of that hole. diff --git a/base/plugins.cpp b/base/plugins.cpp index 2414102f59..39aaf2f73e 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -446,6 +446,10 @@ void PluginManager::addToPluginsInMemList(Plugin *plugin) { #include "engines/metaengine.h" +namespace Common { +DECLARE_SINGLETON(EngineManager); +} + /** * This function works for both cached and uncached PluginManagers. * For the cached version, most of the logic here will short circuit. @@ -535,6 +539,10 @@ const EnginePlugin::List &EngineManager::getPlugins() const { #include "audio/musicplugin.h" +namespace Common { +DECLARE_SINGLETON(MusicManager); +} + const MusicPlugin::List &MusicManager::getPlugins() const { return (const MusicPlugin::List &)PluginManager::instance().getPlugins(PLUGIN_TYPE_MUSIC); } diff --git a/common/archive.cpp b/common/archive.cpp index 07d363a9a8..5a339900b6 100644 --- a/common/archive.cpp +++ b/common/archive.cpp @@ -284,4 +284,6 @@ void SearchManager::clear() { addDirectory(".", ".", -2); } +DECLARE_SINGLETON(SearchManager); + } // namespace Common diff --git a/common/config-manager.cpp b/common/config-manager.cpp index 91ba3c867b..fdd0c6f033 100644 --- a/common/config-manager.cpp +++ b/common/config-manager.cpp @@ -36,6 +36,8 @@ static bool isValidDomainName(const Common::String &domName) { namespace Common { +DECLARE_SINGLETON(ConfigManager); + char const *const ConfigManager::kApplicationDomain = "scummvm"; char const *const ConfigManager::kTransientDomain = "__TRANSIENT"; diff --git a/common/coroutines.cpp b/common/coroutines.cpp index 54e53ff7d3..248777febd 100644 --- a/common/coroutines.cpp +++ b/common/coroutines.cpp @@ -33,6 +33,8 @@ namespace Common { /** Helper null context instance */ CoroContext nullContext = NULL; +DECLARE_SINGLETON(CoroutineScheduler); + #ifdef COROUTINE_DEBUG namespace { /** Count of active coroutines */ diff --git a/common/debug.cpp b/common/debug.cpp index 94517afab6..5db8990db8 100644 --- a/common/debug.cpp +++ b/common/debug.cpp @@ -34,6 +34,8 @@ bool gDebugChannelsOnly = false; namespace Common { +DECLARE_SINGLETON(DebugManager); + namespace { struct DebugLevelComperator { diff --git a/common/osd_message_queue.cpp b/common/osd_message_queue.cpp index 3355295bbe..b8abf18bb5 100644 --- a/common/osd_message_queue.cpp +++ b/common/osd_message_queue.cpp @@ -24,6 +24,8 @@ #include "common/system.h" namespace Common { + +DECLARE_SINGLETON(OSDMessageQueue); OSDMessageQueue::OSDMessageQueue() : _lastUpdate(0) { } diff --git a/common/singleton.h b/common/singleton.h index 6c36d7a37d..9bcd590183 100644 --- a/common/singleton.h +++ b/common/singleton.h @@ -88,7 +88,14 @@ protected: static T *_singleton; }; -template<class T> T *Singleton<T>::_singleton = 0; +/** + * Note that you need to use this macro from the Common namespace. + * + * This is because C++ requires initial explicit specialization + * to be placed in the same namespace as the template. + */ +#define DECLARE_SINGLETON(T) \ + template<> T *Singleton<T>::_singleton = 0 } // End of namespace Common diff --git a/common/translation.cpp b/common/translation.cpp index 04df9d213d..01665bf876 100644 --- a/common/translation.cpp +++ b/common/translation.cpp @@ -40,6 +40,8 @@ namespace Common { +DECLARE_SINGLETON(TranslationManager); + bool operator<(const TLanguage &l, const TLanguage &r) { return strcmp(l.name, r.name) < 0; } diff --git a/engines/engine.cpp b/engines/engine.cpp index 2edb77b8f2..bb51e77f0d 100644 --- a/engines/engine.cpp +++ b/engines/engine.cpp @@ -133,6 +133,10 @@ bool ChainedGamesManager::pop(Common::String &target, int &slot) { return true; } +namespace Common { +DECLARE_SINGLETON(ChainedGamesManager); +} + Engine::Engine(OSystem *syst) : _system(syst), _mixer(_system->getMixer()), diff --git a/engines/lure/sound.cpp b/engines/lure/sound.cpp index 4cb6c44724..bea0dbf9f4 100644 --- a/engines/lure/sound.cpp +++ b/engines/lure/sound.cpp @@ -31,6 +31,10 @@ #include "common/endian.h" #include "audio/midiparser.h" +namespace Common { +DECLARE_SINGLETON(Lure::SoundManager); +} + namespace Lure { //#define SOUND_CROP_CHANNELS diff --git a/engines/pegasus/gamestate.cpp b/engines/pegasus/gamestate.cpp index 877aeffa1b..dfb4f1cd5b 100644 --- a/engines/pegasus/gamestate.cpp +++ b/engines/pegasus/gamestate.cpp @@ -30,6 +30,10 @@ #include "pegasus/gamestate.h" #include "pegasus/scoring.h" +namespace Common { +DECLARE_SINGLETON(Pegasus::GameStateManager); +} + namespace Pegasus { Common::Error GameStateManager::writeGameState(Common::WriteStream *stream) { diff --git a/engines/pegasus/input.cpp b/engines/pegasus/input.cpp index 0a29a43008..f4834037d9 100644 --- a/engines/pegasus/input.cpp +++ b/engines/pegasus/input.cpp @@ -30,6 +30,10 @@ #include "pegasus/input.h" #include "pegasus/pegasus.h" +namespace Common { +DECLARE_SINGLETON(Pegasus::InputDeviceManager); +} + namespace Pegasus { InputDeviceManager::InputDeviceManager() { diff --git a/engines/sword25/gfx/animationtemplateregistry.cpp b/engines/sword25/gfx/animationtemplateregistry.cpp index 875483d66f..4783a314f4 100644 --- a/engines/sword25/gfx/animationtemplateregistry.cpp +++ b/engines/sword25/gfx/animationtemplateregistry.cpp @@ -34,6 +34,10 @@ #include "sword25/gfx/animationtemplateregistry.h" #include "sword25/gfx/animationtemplate.h" +namespace Common { +DECLARE_SINGLETON(Sword25::AnimationTemplateRegistry); +} + namespace Sword25 { bool AnimationTemplateRegistry::persist(OutputPersistenceBlock &writer) { diff --git a/engines/sword25/math/regionregistry.cpp b/engines/sword25/math/regionregistry.cpp index bfa82bc474..35a5fb4b88 100644 --- a/engines/sword25/math/regionregistry.cpp +++ b/engines/sword25/math/regionregistry.cpp @@ -34,6 +34,10 @@ #include "sword25/math/regionregistry.h" #include "sword25/math/region.h" +namespace Common { +DECLARE_SINGLETON(Sword25::RegionRegistry); +} + namespace Sword25 { bool RegionRegistry::persist(OutputPersistenceBlock &writer) { diff --git a/engines/sword25/sword25.cpp b/engines/sword25/sword25.cpp index 1e3a68847a..b6f2641714 100644 --- a/engines/sword25/sword25.cpp +++ b/engines/sword25/sword25.cpp @@ -50,6 +50,9 @@ #include "sword25/gfx/animationtemplateregistry.h" // Needed so we can destroy the singleton #include "sword25/gfx/renderobjectregistry.h" // Needed so we can destroy the singleton +namespace Common { +DECLARE_SINGLETON(Sword25::RenderObjectRegistry); +} #include "sword25/math/regionregistry.h" // Needed so we can destroy the singleton namespace Sword25 { diff --git a/engines/testbed/config-params.cpp b/engines/testbed/config-params.cpp index 3ec47fbe1b..1aa97168c1 100644 --- a/engines/testbed/config-params.cpp +++ b/engines/testbed/config-params.cpp @@ -25,6 +25,10 @@ #include "testbed/config-params.h" +namespace Common { +DECLARE_SINGLETON(Testbed::ConfigParams); +} + namespace Testbed { ConfigParams::ConfigParams() { diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp index 28bdb53e3b..4ce334aceb 100644 --- a/engines/wintermute/base/base_engine.cpp +++ b/engines/wintermute/base/base_engine.cpp @@ -32,6 +32,9 @@ #include "engines/wintermute/wintermute.h" #include "engines/wintermute/system/sys_class_registry.h" #include "common/system.h" +namespace Common { +DECLARE_SINGLETON(Wintermute::BaseEngine); +} namespace Wintermute { diff --git a/graphics/cursorman.cpp b/graphics/cursorman.cpp index 53e13da9a1..5fcd2a3602 100644 --- a/graphics/cursorman.cpp +++ b/graphics/cursorman.cpp @@ -25,6 +25,10 @@ #include "common/system.h" #include "common/stack.h" +namespace Common { +DECLARE_SINGLETON(Graphics::CursorManager); +} + namespace Graphics { CursorManager::~CursorManager() { diff --git a/graphics/fontman.cpp b/graphics/fontman.cpp index bb3ee03330..5cf52416cf 100644 --- a/graphics/fontman.cpp +++ b/graphics/fontman.cpp @@ -26,6 +26,10 @@ #include "common/translation.h" +namespace Common { +DECLARE_SINGLETON(Graphics::FontManager); +} + namespace Graphics { FORWARD_DECLARE_FONT(g_sysfont); diff --git a/graphics/fonts/ttf.cpp b/graphics/fonts/ttf.cpp index cb9520bb86..76b7f731be 100644 --- a/graphics/fonts/ttf.cpp +++ b/graphics/fonts/ttf.cpp @@ -668,5 +668,9 @@ Font *loadTTFFont(Common::SeekableReadStream &stream, int size, TTFSizeMode size } // End of namespace Graphics +namespace Common { +DECLARE_SINGLETON(Graphics::TTFLibrary); +} // End of namespace Common + #endif diff --git a/graphics/yuv_to_rgb.cpp b/graphics/yuv_to_rgb.cpp index 99cd208ec0..2a485fa664 100644 --- a/graphics/yuv_to_rgb.cpp +++ b/graphics/yuv_to_rgb.cpp @@ -86,6 +86,10 @@ #include "graphics/surface.h" #include "graphics/yuv_to_rgb.h" +namespace Common { +DECLARE_SINGLETON(Graphics::YUVToRGBManager); +} + namespace Graphics { class YUVToRGBLookup { diff --git a/gui/EventRecorder.cpp b/gui/EventRecorder.cpp index ccf051f6d8..3f91cfa259 100644 --- a/gui/EventRecorder.cpp +++ b/gui/EventRecorder.cpp @@ -25,6 +25,10 @@ #ifdef ENABLE_EVENTRECORDER +namespace Common { +DECLARE_SINGLETON(GUI::EventRecorder); +} + #include "common/debug-channels.h" #include "backends/timer/sdl/sdl-timer.h" #include "backends/mixer/sdl/sdl-mixer.h" diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp index 12a0320a8c..76f557711d 100644 --- a/gui/gui-manager.cpp +++ b/gui/gui-manager.cpp @@ -41,6 +41,10 @@ #include "graphics/cursorman.h" +namespace Common { +DECLARE_SINGLETON(GUI::GuiManager); +} + namespace GUI { enum { |