diff --git a/ChangeLog b/ChangeLog index 20268612..49de5f51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,10 @@ Romain Moret Jackdmp changes log --------------------------- +2008-06-13 Stephane Letz + + * Correct JackPosixThread::ThreadHandler termination, do not set buffer size if same value is used. + 2008-06-12 Stephane Letz * Another Tim Blechmann patch to remove unnecessary virtual methods. diff --git a/common/JackPosixThread.cpp b/common/JackPosixThread.cpp index 59584720..3a58bb02 100644 --- a/common/JackPosixThread.cpp +++ b/common/JackPosixThread.cpp @@ -59,7 +59,8 @@ void* JackPosixThread::ThreadHandler(void* arg) } jack_log("ThreadHandler: exit"); - return 0; + pthread_exit(0); + return 0; // never reached } int JackPosixThread::Start() diff --git a/common/JackServer.cpp b/common/JackServer.cpp index 27c539c7..2cc30e80 100644 --- a/common/JackServer.cpp +++ b/common/JackServer.cpp @@ -189,6 +189,11 @@ int JackServer::SetBufferSize(jack_nframes_t buffer_size) jack_log("JackServer::SetBufferSize nframes = %ld", buffer_size); jack_nframes_t current_buffer_size = fEngineControl->fBufferSize; + if (current_buffer_size == buffer_size) { + jack_log("SetBufferSize: requirement for new buffer size equals current value"); + return 0; + } + if (fAudioDriver->Stop() != 0) { jack_error("Cannot stop audio driver"); return -1; diff --git a/common/JackThreadedDriver.cpp b/common/JackThreadedDriver.cpp index e8f732d8..506a550f 100644 --- a/common/JackThreadedDriver.cpp +++ b/common/JackThreadedDriver.cpp @@ -54,7 +54,7 @@ int JackThreadedDriver::Start() jack_error("Cannot start driver"); return -1; } - if (fThread.Start() < 0) { + if (fThread.StartSync() < 0) { jack_error("Cannot start thread"); return -1; }