diff --git a/stepmania/src/RageSoundManager.cpp b/stepmania/src/RageSoundManager.cpp index 1f6cf9f533..f8002b034a 100644 --- a/stepmania/src/RageSoundManager.cpp +++ b/stepmania/src/RageSoundManager.cpp @@ -33,24 +33,17 @@ static RageMutex g_SoundManMutex("SoundMan"); RageSoundManager *SOUNDMAN = NULL; -RageSoundManager::RageSoundManager(CString drivers) +RageSoundManager::RageSoundManager() { - /* needs to be done first */ - SOUNDMAN = this; - - try - { - MixVolume = 1.0f; - - driver = MakeRageSoundDriver(drivers); - if(!driver) - RageException::Throw("Couldn't find a sound driver that works"); - } catch(...) { - SOUNDMAN = NULL; - throw; - } - pos_map_queue.reserve( 1024 ); + MixVolume = 1.0f; +} + +void RageSoundManager::Init( CString drivers ) +{ + driver = MakeRageSoundDriver(drivers); + if( driver == NULL ) + RageException::Throw( "Couldn't find a sound driver that works" ); } RageSoundManager::~RageSoundManager() diff --git a/stepmania/src/RageSoundManager.h b/stepmania/src/RageSoundManager.h index d90c724ca2..2cd4158904 100644 --- a/stepmania/src/RageSoundManager.h +++ b/stepmania/src/RageSoundManager.h @@ -33,8 +33,9 @@ class RageSoundManager CircBuf pos_map_queue; public: - RageSoundManager(CString drivers); + RageSoundManager(); ~RageSoundManager(); + void Init( CString drivers ); float GetMixVolume() const { return MixVolume; } void SetPrefs(float MixVol); diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 5cc6dc7be4..02008d8f19 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -1041,8 +1041,9 @@ int main(int argc, char* argv[]) NOTESKIN = new NoteSkinManager; if( PREFSMAN->m_iSoundWriteAhead ) LOG->Info( "Sound writeahead has been overridden to %i", PREFSMAN->m_iSoundWriteAhead ); - SOUNDMAN = new RageSoundManager(PREFSMAN->m_sSoundDrivers); - SOUNDMAN->SetPrefs(PREFSMAN->m_fSoundVolume); + SOUNDMAN = new RageSoundManager; + SOUNDMAN->Init( PREFSMAN->m_sSoundDrivers ); + SOUNDMAN->SetPrefs( PREFSMAN->m_fSoundVolume ); SOUND = new RageSounds; BOOKKEEPER = new Bookkeeper; LIGHTSMAN = new LightsManager(PREFSMAN->m_sLightsDriver);