From 9be4a3cf911cf7992ec9f563e0a6b02d3603f8c6 Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 25 Mar 2009 10:08:59 +0000 Subject: [PATCH] Simplify the way read/write values are computed in JackBoomerDriver. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3467 0c269be4-1314-0410-8aa9-9f06e86f4224 --- solaris/oss/JackBoomerDriver.cpp | 33 ++++++++++++++++++++++++++++++++ solaris/oss/JackBoomerDriver.h | 7 +++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/solaris/oss/JackBoomerDriver.cpp b/solaris/oss/JackBoomerDriver.cpp index a61d7b91..2188c7f7 100644 --- a/solaris/oss/JackBoomerDriver.cpp +++ b/solaris/oss/JackBoomerDriver.cpp @@ -285,6 +285,7 @@ int JackBoomerDriver::OpenInput() jack_info("JackBoomerDriver::OpenInput driver forced the sample rate %ld", fEngineControl->fSampleRate); } + /* fInputBufferSize = 0; if (ioctl(fInFD, SNDCTL_DSP_GETBLKSIZE, &fInputBufferSize) == -1) { jack_error("JackBoomerDriver::OpenInput failed to get fragments : %s@%i, errno = %d", __FILE__, __LINE__, errno); @@ -301,6 +302,10 @@ int JackBoomerDriver::OpenInput() goto error; } } + */ + + // Just set the read size to the value we want... + fInputBufferSize = fEngineControl->fBufferSize * fSampleSize * fCaptureChannels; fInputBuffer = (void*)calloc(fInputBufferSize, 1); assert(fInputBuffer); @@ -368,6 +373,7 @@ int JackBoomerDriver::OpenOutput() jack_info("JackBoomerDriver::OpenInput driver forced the sample rate %ld", fEngineControl->fSampleRate); } + /* fOutputBufferSize = 0; if (ioctl(fOutFD, SNDCTL_DSP_GETBLKSIZE, &fOutputBufferSize) == -1) { jack_error("JackBoomerDriver::OpenOutput failed to get fragments : %s@%i, errno = %d", __FILE__, __LINE__, errno); @@ -384,6 +390,10 @@ int JackBoomerDriver::OpenOutput() goto error; } } + */ + + // Just set the write size to the value we want... + fOutputBufferSize = fEngineControl->fBufferSize * fSampleSize * fPlaybackChannels; fOutputBuffer = (void*)calloc(fOutputBufferSize, 1); fFirstCycle = true; @@ -521,6 +531,21 @@ int JackBoomerDriver::OpenAux() } */ + /* + fPollTable = new pollfd[2]; + + if (fRWMode & kRead && fInFD > 0) { + fPollTable[0].fd = fInFD; + fPollTable[0].events = POLLIN | POLLERR; + fPollTable[0].revents = 0; + } + if (fRWMode & kWrite && fOutFD > 0) { + fPollTable[1].fd = fOutFD; + fPollTable[1].events = POLLOUT | POLLERR; + fPollTable[1].revents = 0; + } + */ + DisplayDeviceInfo(); return 0; } @@ -703,6 +728,14 @@ int JackBoomerDriver::SetBufferSize(jack_nframes_t buffer_size) int JackBoomerDriver::ProcessSync() { + /* + // Global poll + if ((poll(fPollTable, 2, 0) < 0) && (errno != EINTR)) { + jack_error("Driver failed err = %s request thread quits...", strerror(errno)); + return -1; + } + */ + // Read input buffers for the current cycle if (Read() < 0) { jack_error("ProcessSync: read error, skip cycle"); diff --git a/solaris/oss/JackBoomerDriver.h b/solaris/oss/JackBoomerDriver.h index 5f99394c..adda6d49 100644 --- a/solaris/oss/JackBoomerDriver.h +++ b/solaris/oss/JackBoomerDriver.h @@ -63,6 +63,7 @@ class JackBoomerDriver : public JackAudioDriver void* fInputBuffer; void* fOutputBuffer; + pollfd* fPollTable; bool fFirstCycle; @@ -83,11 +84,13 @@ class JackBoomerDriver : public JackAudioDriver fInFD(-1), fOutFD(-1), fBits(0), fSampleFormat(0), fNperiods(0), fRWMode(0), fExcl(false), fIgnoreHW(true), fInputBufferSize(0), fOutputBufferSize(0), - fInputBuffer(NULL), fOutputBuffer(NULL), fFirstCycle(true) + fInputBuffer(NULL), fOutputBuffer(NULL), fPollTable(NULL), fFirstCycle(true) {} virtual ~JackBoomerDriver() - {} + { + //delete[] fPollTable; + } int Open(jack_nframes_t frames_per_cycle, int user_nperiods,