Audio in/out mutex corrections

This commit is contained in:
f4exb 2018-01-06 06:12:30 +01:00
parent 515bc1a04e
commit f60f418f1b
2 changed files with 6 additions and 9 deletions

View File

@ -22,7 +22,7 @@
#include "audio/audiofifo.h" #include "audio/audiofifo.h"
AudioInput::AudioInput() : AudioInput::AudioInput() :
m_mutex(), m_mutex(QMutex::Recursive),
m_audioInput(0), m_audioInput(0),
m_audioUsageCount(0), m_audioUsageCount(0),
m_onExit(false), m_onExit(false),
@ -47,10 +47,9 @@ AudioInput::~AudioInput()
bool AudioInput::start(int device, int rate) bool AudioInput::start(int device, int rate)
{ {
QMutexLocker mutexLocker(&m_mutex);
if (m_audioUsageCount == 0) if (m_audioUsageCount == 0)
{ {
QMutexLocker mutexLocker(&m_mutex);
QAudioDeviceInfo devInfo; QAudioDeviceInfo devInfo;
if (device < 0) if (device < 0)
@ -194,8 +193,6 @@ void AudioInput::stop()
{ {
qDebug("AudioInput::stop"); qDebug("AudioInput::stop");
QMutexLocker mutexLocker(&m_mutex);
if (m_audioUsageCount > 0) if (m_audioUsageCount > 0)
{ {
m_audioUsageCount--; m_audioUsageCount--;
@ -203,6 +200,7 @@ void AudioInput::stop()
if (m_audioUsageCount == 0) if (m_audioUsageCount == 0)
{ {
qDebug("AudioInput::stop: effectively close QIODevice"); qDebug("AudioInput::stop: effectively close QIODevice");
QMutexLocker mutexLocker(&m_mutex);
QIODevice::close(); QIODevice::close();
if (!m_onExit) { if (!m_onExit) {

View File

@ -23,7 +23,7 @@
#include "audio/audiofifo.h" #include "audio/audiofifo.h"
AudioOutput::AudioOutput() : AudioOutput::AudioOutput() :
m_mutex(), m_mutex(QMutex::Recursive),
m_audioOutput(0), m_audioOutput(0),
m_audioUsageCount(0), m_audioUsageCount(0),
m_onExit(false), m_onExit(false),
@ -47,10 +47,10 @@ AudioOutput::~AudioOutput()
bool AudioOutput::start(int device, int rate) bool AudioOutput::start(int device, int rate)
{ {
QMutexLocker mutexLocker(&m_mutex);
if (m_audioUsageCount == 0) if (m_audioUsageCount == 0)
{ {
QMutexLocker mutexLocker(&m_mutex);
QAudioDeviceInfo devInfo; QAudioDeviceInfo devInfo;
if (device < 0) if (device < 0)
@ -191,14 +191,13 @@ void AudioOutput::stop()
{ {
qDebug("AudioOutput::stop"); qDebug("AudioOutput::stop");
QMutexLocker mutexLocker(&m_mutex);
if (m_audioUsageCount > 0) if (m_audioUsageCount > 0)
{ {
m_audioUsageCount--; m_audioUsageCount--;
if (m_audioUsageCount == 0) if (m_audioUsageCount == 0)
{ {
QMutexLocker mutexLocker(&m_mutex);
QIODevice::close(); QIODevice::close();
if (!m_onExit) { if (!m_onExit) {