Fix race condition in AudioInput

This commit is contained in:
michal.szwaj 2018-02-17 21:55:57 +01:00
parent 88cc45ac2e
commit 54f160c8c8

View File

@ -97,24 +97,23 @@ void AudioInput::stop()
uint32_t AudioInput::getSampleSize() const uint32_t AudioInput::getSampleSize() const
{ {
std::lock_guard<decltype(mutex_)> lock(mutex_);
return audioFormat_.sampleSize(); return audioFormat_.sampleSize();
} }
uint32_t AudioInput::getChannelCount() const uint32_t AudioInput::getChannelCount() const
{ {
std::lock_guard<decltype(mutex_)> lock(mutex_);
return audioFormat_.channelCount(); return audioFormat_.channelCount();
} }
uint32_t AudioInput::getSampleRate() const uint32_t AudioInput::getSampleRate() const
{ {
std::lock_guard<decltype(mutex_)> lock(mutex_);
return audioFormat_.sampleRate(); return audioFormat_.sampleRate();
} }
void AudioInput::onStartRecording(StartPromise::Pointer promise) void AudioInput::onStartRecording(StartPromise::Pointer promise)
{ {
std::lock_guard<decltype(mutex_)> lock(mutex_);
ioDevice_ = audioInput_->start(); ioDevice_ = audioInput_->start();
if(ioDevice_ != nullptr) if(ioDevice_ != nullptr)
@ -130,6 +129,8 @@ void AudioInput::onStartRecording(StartPromise::Pointer promise)
void AudioInput::onStopRecording() void AudioInput::onStopRecording()
{ {
std::lock_guard<decltype(mutex_)> lock(mutex_);
if(readPromise_ != nullptr) if(readPromise_ != nullptr)
{ {
readPromise_->reject(); readPromise_->reject();
@ -148,6 +149,8 @@ void AudioInput::onStopRecording()
void AudioInput::onReadyRead() void AudioInput::onReadyRead()
{ {
std::lock_guard<decltype(mutex_)> lock(mutex_);
if(readPromise_ == nullptr) if(readPromise_ == nullptr)
{ {
return; return;