From 7caa8eabf8d4395f98764424d9c0b1bccbf32c77 Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandre.savard@savoirfairelinux.com> Date: Thu, 3 May 2012 17:41:20 -0400 Subject: [PATCH] #10220: Fix recording thread does not exit when hanging up while recording --- daemon/src/audio/audiorecorder.cpp | 7 ++++--- daemon/src/audio/audiorecorder.h | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/daemon/src/audio/audiorecorder.cpp b/daemon/src/audio/audiorecorder.cpp index f49c00771c..54a742179a 100644 --- a/daemon/src/audio/audiorecorder.cpp +++ b/daemon/src/audio/audiorecorder.cpp @@ -30,6 +30,7 @@ #include "audiorecorder.h" #include "mainbuffer.h" +#include "logger.h" #include <sstream> #include <cassert> #include <tr1/array> @@ -37,7 +38,7 @@ int AudioRecorder::count_ = 0; AudioRecorder::AudioRecorder(AudioRecord *arec, MainBuffer *mb) : ost::Thread(), - recorderId_(), mbuffer_(mb), arecord_(arec) + recorderId_(), mbuffer_(mb), arecord_(arec), running_(true) { assert(mb); @@ -63,13 +64,13 @@ void AudioRecorder::run() std::tr1::array<SFLDataFormat, BUFFER_LENGTH> buffer; buffer.assign(0); - while (isRunning()) { + while (running_) { size_t availBytes = mbuffer_->availForGet(recorderId_); mbuffer_->getData(buffer.data(), std::min(availBytes, buffer.size()), recorderId_); if (availBytes > 0) arecord_->recData(buffer.data(), availBytes / sizeof(SFLDataFormat)); - sleep(20); + Thread::sleep(20); } } diff --git a/daemon/src/audio/audiorecorder.h b/daemon/src/audio/audiorecorder.h index 82be9a4795..c417b4cc7b 100644 --- a/daemon/src/audio/audiorecorder.h +++ b/daemon/src/audio/audiorecorder.h @@ -44,6 +44,7 @@ class AudioRecorder : public ost::Thread { AudioRecorder(AudioRecord *arec, MainBuffer *mb); ~AudioRecorder() { + running_ = false; terminate(); } @@ -61,6 +62,7 @@ class AudioRecorder : public ost::Thread { std::string recorderId_; MainBuffer *mbuffer_; AudioRecord *arecord_; + bool running_; }; #endif -- GitLab