From 37715e00b8740e9b0fc10a7fe6eb2ce60abedb94 Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 22 Jul 2009 15:37:19 +0000 Subject: [PATCH] Solaris boomer backend now working in capture or playback only mode. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3618 0c269be4-1314-0410-8aa9-9f06e86f4224 --- ChangeLog | 3 +- solaris/oss/JackBoomerDriver.cpp | 50 ++++++++++---------------------- solaris/oss/JackBoomerDriver.h | 3 -- 3 files changed, 18 insertions(+), 38 deletions(-) diff --git a/ChangeLog b/ChangeLog index 561474fa..9ff3a1b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -27,7 +27,8 @@ Paul Davis 2009-07-22 Stephane Letz - * Version 1.9.4 started. + * Version 1.9.4 started. + * Solaris boomer backend now working in capture or playback only mode. 2009-07-17 Stephane Letz diff --git a/solaris/oss/JackBoomerDriver.cpp b/solaris/oss/JackBoomerDriver.cpp index 96dc0a6a..c5eeaf7d 100644 --- a/solaris/oss/JackBoomerDriver.cpp +++ b/solaris/oss/JackBoomerDriver.cpp @@ -404,12 +404,6 @@ int JackBoomerDriver::Open(jack_nframes_t nframes, int bits, bool ignorehwbuf) { - - if (playing && !capturing) { - jack_error("Playback only mode is not yet supported, use duplex instead"); - return -1; - } - // Generic JackAudioDriver Open if (JackAudioDriver::Open(nframes, samplerate, capturing, playing, inchannels, outchannels, monitor, capture_driver_uid, playback_driver_uid, capture_latency, playback_latency) != 0) { @@ -572,26 +566,6 @@ int JackBoomerDriver::Stop() return 0; } -int JackBoomerDriver::Read() -{ -/* - // Keep begin cycle time - JackDriver::CycleTakeBeginTime(); -*/ - - return 0; -} - -int JackBoomerDriver::Write() -{ -/* - // Keep begin cycle time - JackDriver::CycleTakeEndTime(); -*/ - - return 0; -} - bool JackBoomerDriver::JackBoomerDriverInput::Init() { if (fDriver->IsRealTime()) { @@ -608,12 +582,7 @@ bool JackBoomerDriver::JackBoomerDriverInput::Init() bool JackBoomerDriver::JackBoomerDriverInput::Execute() { - if (fDriver->fInFD < 0) { - // Keep begin cycle time - fDriver->CycleTakeBeginTime(); - return true; - } - + #ifdef JACK_MONITOR gCycleTable.fTable[gCycleReadCount].fBeforeRead = GetMicroSeconds(); #endif @@ -661,7 +630,13 @@ bool JackBoomerDriver::JackBoomerDriverInput::Execute() #endif } - fDriver->SynchronizeRead(); + // Duplex : sync with write thread + if (fDriver->fInFD > 0 && fDriver->fOutFD > 0) { + fDriver->SynchronizeRead(); + } else { + // Otherwise direct process + fDriver->Process(); + } return true; } @@ -748,7 +723,14 @@ bool JackBoomerDriver::JackBoomerDriverOutput::Execute() jack_error("JackBoomerDriverOutput::Execute error bytes written = %ld", count); } - fDriver->SynchronizeWrite(); + // Duplex : sync with read thread + if (fDriver->fInFD > 0 && fDriver->fOutFD > 0) { + fDriver->SynchronizeWrite(); + } else { + // Otherwise direct process + fDriver->CycleTakeBeginTime(); + fDriver->Process(); + } return true; } diff --git a/solaris/oss/JackBoomerDriver.h b/solaris/oss/JackBoomerDriver.h index f688c7e1..2b9c4c1a 100644 --- a/solaris/oss/JackBoomerDriver.h +++ b/solaris/oss/JackBoomerDriver.h @@ -145,9 +145,6 @@ class JackBoomerDriver : public JackAudioDriver int Start(); int Stop(); - int Read(); - int Write(); - // BufferSize can be changed bool IsFixedBufferSize() {