comparison audioio/AudioCallbackPlaySource.cpp @ 418:8d2112977aa0 tonioni

Don't clear ring buffers & regenerate when adding a model that is muted anyway
author Chris Cannam
date Tue, 11 Nov 2014 16:34:22 +0000
parents b65ee5c4f8bc
children aa6fb3516e28
comparison
equal deleted inserted replaced
417:d62a622a0e40 418:8d2112977aa0
147 void 147 void
148 AudioCallbackPlaySource::addModel(Model *model) 148 AudioCallbackPlaySource::addModel(Model *model)
149 { 149 {
150 if (m_models.find(model) != m_models.end()) return; 150 if (m_models.find(model) != m_models.end()) return;
151 151
152 bool canPlay = m_audioGenerator->addModel(model); 152 bool willPlay = m_audioGenerator->addModel(model);
153 153
154 m_mutex.lock(); 154 m_mutex.lock();
155 155
156 m_models.insert(model); 156 m_models.insert(model);
157 if (model->getEndFrame() > m_lastModelEndFrame) { 157 if (model->getEndFrame() > m_lastModelEndFrame) {
223 223
224 if (!m_writeBuffers || (int)m_writeBuffers->size() < getTargetChannelCount()) { 224 if (!m_writeBuffers || (int)m_writeBuffers->size() < getTargetChannelCount()) {
225 clearRingBuffers(true, getTargetChannelCount()); 225 clearRingBuffers(true, getTargetChannelCount());
226 buffersChanged = true; 226 buffersChanged = true;
227 } else { 227 } else {
228 if (canPlay) clearRingBuffers(true); 228 if (willPlay) clearRingBuffers(true);
229 } 229 }
230 230
231 if (buffersChanged || srChanged) { 231 if (buffersChanged || srChanged) {
232 if (m_converter) { 232 if (m_converter) {
233 src_delete(m_converter); 233 src_delete(m_converter);