void cAudioManager::update() { updateSources.clear(); { cAudioMutexBasicLock lock(Mutex); size_t count = audioSources.size(); for(size_t i=0; i<count; i++) { IAudioSource* source = audioSources[i]; if (source->isValid()) { source->grab(); updateSources.push_back(source); } } } // not holding the mutex because this might take a while! for (int i=0; i != updateSources.size(); i++) { IAudioSource *src = updateSources[i]; src->update(); src->drop(); } cAudioMutexBasicLock lock(Mutex); if (!managedAudioSources.empty()) { size_t count = managedAudioSources.size(); for(size_t i=0; i<count; i++) { IAudioSource* source = managedAudioSources[i]; if (source->isValid()) { source->update(); if (source->isStopped()) { managedAudioSourcesDelBuffer.push_back(source); } } } count = managedAudioSourcesDelBuffer.size(); for(size_t i=0; i<count; i++) { IAudioSource* source = managedAudioSourcesDelBuffer[i]; cAudioVector<IAudioSource*>::Type::iterator it = std::find(managedAudioSources.begin(), managedAudioSources.end(), source); if (it != managedAudioSources.end()) { managedAudioSources.erase(it); CAUDIO_DELETE source; } } managedAudioSourcesDelBuffer.clear(); } }
void cAudioManager::update() { cAudioMutexBasicLock lock(Mutex); size_t count = audioSources.size(); for(size_t i=0; i<count; i++) { IAudioSource* source = audioSources[i]; if (source->isValid()) { source->update(); } } if (!managedAudioSources.empty()) { count = managedAudioSources.size(); for(size_t i=0; i<count; i++) { IAudioSource* source = managedAudioSources[i]; if (source->isValid()) { source->update(); if (source->isStopped()) { managedAudioSourcesDelBuffer.push_back(source); } } } count = managedAudioSourcesDelBuffer.size(); for(size_t i=0; i<count; i++) { IAudioSource* source = managedAudioSourcesDelBuffer[i]; cAudioVector<IAudioSource*>::Type::iterator it = std::find(managedAudioSources.begin(), managedAudioSources.end(), source); if (it != managedAudioSources.end()) { managedAudioSources.erase(it); CAUDIO_DELETE source; } } managedAudioSourcesDelBuffer.clear(); } }