aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/jack/outputjack.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-08-03 17:27:42 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-08-03 17:27:42 +0000
commitf53f3338f8fedb2790966c3a879275f71004e7f5 (patch)
treefe68161f8f451996694f286a68e4e6eba7f90f9e /src/plugins/Output/jack/outputjack.cpp
parentbd04469dd8d10af7bae41a765dc7c99f26fe20b2 (diff)
downloadqmmp-f53f3338f8fedb2790966c3a879275f71004e7f5.tar.gz
qmmp-f53f3338f8fedb2790966c3a879275f71004e7f5.tar.bz2
qmmp-f53f3338f8fedb2790966c3a879275f71004e7f5.zip
ixed pulseaudio and jack support, updated Russian translation
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2289 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/jack/outputjack.cpp')
-rw-r--r--src/plugins/Output/jack/outputjack.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/plugins/Output/jack/outputjack.cpp b/src/plugins/Output/jack/outputjack.cpp
index 39548acd4..a08f5efbc 100644
--- a/src/plugins/Output/jack/outputjack.cpp
+++ b/src/plugins/Output/jack/outputjack.cpp
@@ -31,10 +31,13 @@
#include <stdio.h>
#include <string.h>
+#define JACK_TIMEOUT 500000L
+
OutputJACK::OutputJACK(QObject *parent)
: Output(parent), m_inited(false), m_configure(false)
{
JACK_Init();
+ m_wait_time = 0;
}
OutputJACK::~OutputJACK()
@@ -89,8 +92,17 @@ qint64 OutputJACK::writeAudio(unsigned char *data, qint64 maxSize)
if(!m_configure)
return -1;
m = JACK_Write(jack_device, (unsigned char*)data, maxSize);
+
if (!m)
+ {
usleep(2000);
+ if(JACK_GetState(jack_device) != PLAYING)
+ m_wait_time += 2000;
+ if(m_wait_time > JACK_TIMEOUT)
+ return -1;
+ }
+ else
+ m_wait_time = 0;
return m;
}
@@ -107,4 +119,3 @@ void OutputJACK::uninitialize()
if (m_configure)
JACK_Close(jack_device);
}
-