Added support to remove a single audio source.

This commit is contained in:
Joshua Jones 2010-01-19 04:04:40 +00:00
parent 30e5b4a99e
commit 4e5dcd3443
3 changed files with 30 additions and 0 deletions

View File

@ -35,6 +35,8 @@ namespace cAudio
virtual IAudio* getSoundByName(const char* name);
//!Releases "ALL" cAudio objects
virtual void release();
//!Releases a single cAudio source
virtual void release(IAudio* source);
//! Returns the name of an available playback device.
/** \param index: Specify which name to retrieve ( Range: 0 to getAvailableDeviceCount()-1 ) */

View File

@ -430,6 +430,32 @@ namespace cAudio
audioIndex.clear();
}
void cAudioManager::release(IAudio* source)
{
if(source)
{
cAudioMutexBasicLock lock(Mutex);
std::map<std::string,IAudio*>::iterator it = audioIndex.begin();
for ( it=audioIndex.begin(); it != audioIndex.end(); it++ )
{
if( it->second == source )
{
audioIndex.erase(it);
break;
}
}
for(unsigned int i=0; i<audioSources.size(); ++i)
{
if(source == audioSources[i])
{
source->drop();
audioSources.erase(audioSources.begin()+i);
break;
}
}
}
}
//!Updates all audiosources created
void cAudioManager::update()
{

View File

@ -27,6 +27,8 @@ namespace cAudio
virtual IAudio* getSoundByName(const char* name) = 0;
//!Releases "ALL" cAudio objects (but does not shutdown the manager)
virtual void release() = 0;
//!Releases a single cAudio source
virtual void release(IAudio* source) = 0;
//! Returns the name of an available playback device.
/** \param index: Specify which name to retrieve ( Range: 0 to getAvailableDeviceCount()-1 ) */