comparison audio/AudioCallbackRecordTarget.cpp @ 609:96b605673585

Fix failure to call updateModel() ever again after no frames available
author Chris Cannam
date Wed, 08 Aug 2018 15:17:36 +0100
parents 8cc291b13f2b
children 37b23e50832b
comparison
equal deleted inserted replaced
608:523dc97f027d 609:96b605673585
19 19
20 #include "data/model/WritableWaveFileModel.h" 20 #include "data/model/WritableWaveFileModel.h"
21 21
22 #include <QDir> 22 #include <QDir>
23 #include <QTimer> 23 #include <QTimer>
24
25 //#define DEBUG_AUDIO_CALLBACK_RECORD_TARGET 1
26
27 static const int recordUpdateTimeout = 200; // ms
24 28
25 AudioCallbackRecordTarget::AudioCallbackRecordTarget(ViewManagerBase *manager, 29 AudioCallbackRecordTarget::AudioCallbackRecordTarget(ViewManagerBase *manager,
26 QString clientName) : 30 QString clientName) :
27 m_viewManager(manager), 31 m_viewManager(manager),
28 m_clientName(clientName.toUtf8().data()), 32 m_clientName(clientName.toUtf8().data()),
147 nframes = m_buffers[c]->getReadSpace(); 151 nframes = m_buffers[c]->getReadSpace();
148 } 152 }
149 } 153 }
150 154
151 if (nframes == 0) { 155 if (nframes == 0) {
156 #ifdef DEBUG_AUDIO_CALLBACK_RECORD_TARGET
157 cerr << "AudioCallbackRecordTarget::updateModel: no frames available" << endl;
158 #endif
159 if (m_recording) {
160 QTimer::singleShot(recordUpdateTimeout, this, SLOT(updateModel()));
161 }
152 return; 162 return;
153 } 163 }
154 164
155 float **samples = new float *[m_recordChannelCount]; 165 float **samples = new float *[m_recordChannelCount];
156 for (int c = 0; c < m_recordChannelCount; ++c) { 166 for (int c = 0; c < m_recordChannelCount; ++c) {