Browse Source

make use of QThread::requestInterruption

pull/2509/head
Nils Fenner 10 years ago
parent
commit
535bb212f5
No known key found for this signature in database
GPG Key ID: 9591A163FF9BE04C
  1. 18
      src/audio/audio.cpp

18
src/audio/audio.cpp

@ -151,19 +151,13 @@ class AudioMeter : public QThread @@ -151,19 +151,13 @@ class AudioMeter : public QThread
{
public:
AudioMeter()
: mActive(false)
{
connect(this, &AudioMeter::finished, this, &AudioMeter::deleteLater);
}
void waitForData(QMutex* condition)
inline void stop()
{
mCheckGainChanged.wait(condition);
}
void monitorFrame()
{
mDoMonitoring.wakeAll();
requestInterruption();
}
private:
@ -174,9 +168,8 @@ private: @@ -174,9 +168,8 @@ private:
Audio& audio = Audio::getInstance();
mNewMaxGain = 0.f;
mActive = true;
while (mActive) {
while (!isInterruptionRequested()) {
int16_t buff[framesize] = {0};
if (audio.tryCaptureSamples(buff, AUDIO_FRAME_SAMPLE_COUNT)) {
mMeterLock.lock();
@ -200,7 +193,6 @@ public: @@ -200,7 +193,6 @@ public:
QMutex mMeterLock;
QWaitCondition mDoMonitoring;
QWaitCondition mCheckGainChanged;
bool mActive;
qreal mNewMaxGain;
};
@ -253,7 +245,7 @@ void AudioMeterListener::doListen() @@ -253,7 +245,7 @@ void AudioMeterListener::doListen()
mAudioMeter->monitorFrame();
}
mAudioMeter->mActive = false;
mAudioMeter->requestInterruption();
}
@ -285,6 +277,8 @@ Audio::Audio() @@ -285,6 +277,8 @@ Audio::Audio()
Audio::~Audio()
{
if (d->mAudioMeter)
d->mAudioMeter->stop();
d->audioThread->exit();
d->audioThread->wait();
d->cleanupInput();

Loading…
Cancel
Save