diff --git a/stepmania/src/arch/InputHandler/InputHandler.cpp b/stepmania/src/arch/InputHandler/InputHandler.cpp index 265db37c05..adeac85e0f 100644 --- a/stepmania/src/arch/InputHandler/InputHandler.cpp +++ b/stepmania/src/arch/InputHandler/InputHandler.cpp @@ -162,11 +162,7 @@ RString InputHandler::GetLocalizedInputString( const DeviceInput &di ) } } -static DriverList g_pRegistrees; -RegisterInputHandler::RegisterInputHandler( const istring &sName, CreateRageDriverFn pfn ) -{ - g_pRegistrees.Add( sName, pfn ); -} +DriverList InputHandler::m_pDriverList; static LocalizedString INPUT_HANDLERS_EMPTY( "Arch", "Input Handlers cannot be empty." ); void InputHandler::Create( const RString &drivers_, vector &Add ) @@ -180,7 +176,7 @@ void InputHandler::Create( const RString &drivers_, vector &Add FOREACH_CONST( RString, DriversToTry, s ) { - RageDriver *pDriver = g_pRegistrees.Create( *s ); + RageDriver *pDriver = InputHandler::m_pDriverList.Create( *s ); if( pDriver == NULL ) { LOG->Trace( "Unknown Input Handler name: %s", s->c_str() ); diff --git a/stepmania/src/arch/InputHandler/InputHandler.h b/stepmania/src/arch/InputHandler/InputHandler.h index b39cba3657..f27a2f5bb9 100644 --- a/stepmania/src/arch/InputHandler/InputHandler.h +++ b/stepmania/src/arch/InputHandler/InputHandler.h @@ -27,6 +27,7 @@ class InputHandler: public RageDriver { public: static void Create( const RString &sDrivers, vector &apAdd ); + static DriverList m_pDriverList; InputHandler() { m_iInputsSinceUpdate = 0; } virtual ~InputHandler() { } @@ -71,12 +72,8 @@ private: int m_iInputsSinceUpdate; }; -struct RegisterInputHandler -{ - RegisterInputHandler( const istring &sName, CreateRageDriverFn pfn ); -}; #define REGISTER_INPUT_HANDLER_CLASS2( name, x ) \ - static RegisterInputHandler register_##name( #name, CreateClass ) + static RegisterRageDriver register_##name( &InputHandler::m_pDriverList, #name, CreateClass ) #define REGISTER_INPUT_HANDLER_CLASS( name ) REGISTER_INPUT_HANDLER_CLASS2( name, name ) diff --git a/stepmania/src/arch/MovieTexture/MovieTexture.cpp b/stepmania/src/arch/MovieTexture/MovieTexture.cpp index 82f9aa22cb..eccd90653b 100644 --- a/stepmania/src/arch/MovieTexture/MovieTexture.cpp +++ b/stepmania/src/arch/MovieTexture/MovieTexture.cpp @@ -57,11 +57,7 @@ bool RageMovieTexture::GetFourCC( RString fn, RString &handler, RString &type ) #undef HANDLE_ERROR } -static DriverList g_pRegistrees; -RegisterMovieTextureDriver::RegisterMovieTextureDriver( const istring &sName, CreateRageDriverFn pfn ) -{ - g_pRegistrees.Add( sName, pfn ); -} +DriverList RageMovieTextureDriver::m_pDriverList; // Helper for MakeRageMovieTexture() static void DumpAVIDebugInfo( const RString& fn ) @@ -96,7 +92,7 @@ RageMovieTexture *RageMovieTexture::Create( RageTextureID ID ) FOREACH_CONST( RString, DriversToTry, Driver ) { LOG->Trace( "Initializing driver: %s", Driver->c_str() ); - RageDriver *pDriverBase = g_pRegistrees.Create( *Driver ); + RageDriver *pDriverBase = RageMovieTextureDriver::m_pDriverList.Create( *Driver ); if( pDriverBase == NULL ) { diff --git a/stepmania/src/arch/MovieTexture/MovieTexture.h b/stepmania/src/arch/MovieTexture/MovieTexture.h index 43f20165d6..a97ea7e89f 100644 --- a/stepmania/src/arch/MovieTexture/MovieTexture.h +++ b/stepmania/src/arch/MovieTexture/MovieTexture.h @@ -30,14 +30,11 @@ class RageMovieTextureDriver: public RageDriver public: virtual ~RageMovieTextureDriver() { } virtual RageMovieTexture *Create( RageTextureID ID, RString &sError ) = 0; + static DriverList m_pDriverList; }; -struct RegisterMovieTextureDriver -{ - RegisterMovieTextureDriver( const istring &sName, CreateRageDriverFn ); -}; #define REGISTER_MOVIE_TEXTURE_CLASS( name ) \ - static RegisterMovieTextureDriver register_##name( #name, CreateClass ) + static RegisterRageDriver register_##name( &RageMovieTextureDriver::m_pDriverList, #name, CreateClass ) #endif diff --git a/stepmania/src/arch/Sound/RageSoundDriver.cpp b/stepmania/src/arch/Sound/RageSoundDriver.cpp index 97b8988916..3d9c6dcdac 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver.cpp @@ -4,12 +4,7 @@ #include "RageUtil.h" #include "Foreach.h" -static DriverList g_pRegistrees; - -RegisterSoundDriver::RegisterSoundDriver( const istring &sName, CreateRageDriverFn pfn ) -{ - g_pRegistrees.Add( sName, pfn ); -} +DriverList RageSoundDriver::m_pDriverList; RageSoundDriver *RageSoundDriver::Create( const RString &drivers ) { @@ -18,7 +13,7 @@ RageSoundDriver *RageSoundDriver::Create( const RString &drivers ) FOREACH_CONST( RString, DriversToTry, Driver ) { - RageDriver *pDriver = g_pRegistrees.Create( *Driver ); + RageDriver *pDriver = m_pDriverList.Create( *Driver ); if( pDriver == NULL ) { LOG->Trace( "Unknown sound driver: %s", Driver->c_str() ); diff --git a/stepmania/src/arch/Sound/RageSoundDriver.h b/stepmania/src/arch/Sound/RageSoundDriver.h index 9be106aaf8..b2b08a2f02 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver.h +++ b/stepmania/src/arch/Sound/RageSoundDriver.h @@ -9,6 +9,7 @@ class RageSoundDriver: public RageDriver { public: static RageSoundDriver *Create( const RString &sDrivers ); + static DriverList m_pDriverList; friend class RageSoundManager; @@ -53,13 +54,9 @@ public: virtual ~RageSoundDriver() { } }; -struct RegisterSoundDriver -{ - RegisterSoundDriver( const istring &sName, CreateRageDriverFn pfn ); -}; // Can't use Create##name because many of these have -sw suffixes. #define REGISTER_SOUND_DRIVER_CLASS2( name, x ) \ - static RegisterSoundDriver register_##x( #name, CreateClass ) + static RegisterRageDriver register_##x( &RageSoundDriver::m_pDriverList, #name, CreateClass ) #define REGISTER_SOUND_DRIVER_CLASS( name ) REGISTER_SOUND_DRIVER_CLASS2( name, name )