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

View File

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