Mercurial > hg > svapp
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) { |