Fixed potential deadlock (if a sfx is not found in the queue, which shouldn't
happen); stop sounds which are deleted only once, slightly reduce size of locked region.
This commit is contained in:
parent
813edc7ddf
commit
c7f37297b1
@ -289,7 +289,6 @@ void* SFXManager::mainLoop(void *obj)
|
|||||||
case SFX_LOOP: current->m_sfx->reallySetLoop(
|
case SFX_LOOP: current->m_sfx->reallySetLoop(
|
||||||
current->m_parameter.getX()!=0); break;
|
current->m_parameter.getX()!=0); break;
|
||||||
case SFX_DELETE: {
|
case SFX_DELETE: {
|
||||||
current->m_sfx->reallyStopNow();
|
|
||||||
me->deleteSFX(current->m_sfx); break;
|
me->deleteSFX(current->m_sfx); break;
|
||||||
}
|
}
|
||||||
case SFX_LISTENER: me->reallyPositionListenerNow(); break;
|
case SFX_LISTENER: me->reallyPositionListenerNow(); break;
|
||||||
@ -598,13 +597,14 @@ void SFXManager::deleteSFX(SFXBase *sfx)
|
|||||||
Log::warn("SFXManager",
|
Log::warn("SFXManager",
|
||||||
"SFXManager::deleteSFX : Warning: sfx '%s' %lx not found in list.",
|
"SFXManager::deleteSFX : Warning: sfx '%s' %lx not found in list.",
|
||||||
sfx->getBuffer()->getFileName().c_str(), sfx);
|
sfx->getBuffer()->getFileName().c_str(), sfx);
|
||||||
|
m_all_sfx.unlock();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_all_sfx.getData().erase(i);
|
m_all_sfx.getData().erase(i);
|
||||||
delete sfx;
|
|
||||||
|
|
||||||
m_all_sfx.unlock();
|
m_all_sfx.unlock();
|
||||||
|
|
||||||
|
delete sfx;
|
||||||
} // deleteSFX
|
} // deleteSFX
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user