diff --git a/stepmania/src/RageSound.cpp b/stepmania/src/RageSound.cpp index bab2813cbb..9e20c2cf15 100644 --- a/stepmania/src/RageSound.cpp +++ b/stepmania/src/RageSound.cpp @@ -417,7 +417,7 @@ void RageSound::Play( const RageSoundParams *pParams ) if( IsPlaying() ) { - SOUNDMAN->PlayCopyOfSound( *this, pParams ); + PlayCopy( pParams ); return; } @@ -427,6 +427,17 @@ void RageSound::Play( const RageSoundParams *pParams ) StartPlaying(); } +void RageSound::PlayCopy( const RageSoundParams *pParams ) const +{ + RageSound *pSound = new RageSound( *this ); + + if( pParams ) + pSound->SetParams( *pParams ); + + pSound->StartPlaying(); + pSound->DeleteSelfWhenFinishedPlaying(); +} + void RageSound::Stop() { StopPlaying(); diff --git a/stepmania/src/RageSound.h b/stepmania/src/RageSound.h index 86a27f967e..3cee34f706 100644 --- a/stepmania/src/RageSound.h +++ b/stepmania/src/RageSound.h @@ -124,6 +124,7 @@ public: RString GetError() const { return m_sError; } void Play( const RageSoundParams *params=NULL ); + void PlayCopy( const RageSoundParams *pParams = NULL ) const; void Stop(); /* Cleanly pause or unpause the sound. If the sound wasn't already playing,