Added support to remove a single audio source.
This commit is contained in:
parent
30e5b4a99e
commit
4e5dcd3443
|
@ -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 ) */
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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 ) */
|
||||
|
|
Loading…
Reference in New Issue