Mercurial > hg > svapp
changeset 204:5ee9e6bc21eb
* Use a mutex when setting auditioning plugin; lifecycle management too fragile otherwise
author | Chris Cannam |
---|---|
date | Fri, 08 Oct 2010 11:19:57 +0100 |
parents | aafbb79e93d4 |
children | a3fbd52031a5 |
files | audioio/AudioCallbackPlaySource.cpp |
diffstat | 1 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/audioio/AudioCallbackPlaySource.cpp Fri Oct 08 09:40:16 2010 +0100 +++ b/audioio/AudioCallbackPlaySource.cpp Fri Oct 08 11:19:57 2010 +0100 @@ -962,10 +962,11 @@ if (a && !plugin) { std::cerr << "WARNING: AudioCallbackPlaySource::setAuditioningEffect: auditionable object " << a << " is not a real-time plugin instance" << std::endl; } - RealTimePluginInstance *formerPlugin = m_auditioningPlugin; + + m_mutex.lock(); m_auditioningPlugin = plugin; m_auditioningPluginBypassed = false; - if (formerPlugin) m_pluginScavenger.claim(formerPlugin); + m_mutex.unlock(); } void @@ -1249,7 +1250,7 @@ if (m_auditioningPluginBypassed) return; RealTimePluginInstance *plugin = m_auditioningPlugin; if (!plugin) return; - + if (plugin->getAudioInputCount() != getTargetChannelCount()) { // std::cerr << "plugin input count " << plugin->getAudioInputCount() // << " != our channel count " << getTargetChannelCount()