Fix occasional audio interface deadlock (#4450)

This commit is contained in:
Hyunjin Song
2018-07-10 11:13:56 +09:00
committed by GitHub
parent 0f3b41f590
commit f2d68326a7
10 changed files with 38 additions and 16 deletions

View File

@@ -37,7 +37,6 @@
#include <QtCore/QVector>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QMutexLocker>
#include "AudioDevice.h"
#include "AudioDeviceSetupWidget.h"
@@ -108,7 +107,6 @@ private:
bool m_active;
bool m_stopped;
QMutex m_processingMutex;
MidiJack *m_midiClient;
QVector<jack_port_t *> m_outputPorts;

View File

@@ -145,7 +145,6 @@ private:
int m_outBufSize;
bool m_stopped;
QSemaphore m_stopSemaphore;
} ;

View File

@@ -109,6 +109,8 @@ private:
fpp_t m_outBufFramesTotal;
fpp_t m_outBufFrameIndex;
bool m_stopped;
int m_disconnectErr;
void onBackendDisconnect(int err);

View File

@@ -66,6 +66,12 @@ public:
return( element );
}
void waitUntilRead()
{
m_writer_sem.acquire( m_size );
m_writer_sem.release( m_size );
}
bool available()
{
return( m_reader_sem.available() );