diff --git a/ChangeLog b/ChangeLog index 2789228a..00836fb0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,6 +20,10 @@ Fernando Lopez-Lezcano Jackdmp changes log --------------------------- +2008-06-04 Stephane Letz + + * Use of set_threaded_log_function only when needed in RT threads. + 2008-06-02 Stephane Letz * Tim Blechmann patch to remove unnecessary virtual methods : choice of the appropriate platform version is now done at compilation time. diff --git a/common/JackClient.cpp b/common/JackClient.cpp index c5c36bce..e44311a4 100644 --- a/common/JackClient.cpp +++ b/common/JackClient.cpp @@ -340,6 +340,9 @@ bool JackClient::Execute() { if (!jack_tls_set(gRealTime, this)) jack_error("failed to set thread realtime key"); + + if (GetEngineControl()->fRealTime) + set_threaded_log_function(); if (fThreadFun) { // Execute a dummy cycle to be sure thread has the correct properties (ensure thread creation is finished) diff --git a/common/JackError.cpp b/common/JackError.cpp index c465ebe7..a3bf1349 100644 --- a/common/JackError.cpp +++ b/common/JackError.cpp @@ -63,9 +63,7 @@ void jack_log_function(int level, const char *message) log_callback(message); } -static -void -jack_format_and_log(int level, const char *prefix, const char *fmt, va_list ap) +static void jack_format_and_log(int level, const char *prefix, const char *fmt, va_list ap) { char buffer[300]; size_t len; diff --git a/common/JackPosixThread.cpp b/common/JackPosixThread.cpp index 940444d3..a44f2b14 100644 --- a/common/JackPosixThread.cpp +++ b/common/JackPosixThread.cpp @@ -40,8 +40,6 @@ void* JackPosixThread::ThreadHandler(void* arg) jack_error("pthread_setcanceltype err = %s", strerror(err)); } - set_threaded_log_function(); - // Signal creation thread when started with StartSync jack_log("ThreadHandler: start"); obj->fStatus = kIniting; diff --git a/common/JackThreadedDriver.cpp b/common/JackThreadedDriver.cpp index 802097f1..253bbefe 100644 --- a/common/JackThreadedDriver.cpp +++ b/common/JackThreadedDriver.cpp @@ -108,8 +108,11 @@ bool JackThreadedDriver::Init() jack_log("JackThreadedDriver::Init IsRealTime"); // Will do "something" on OSX only... fThread.SetParams(GetEngineControl()->fPeriod, GetEngineControl()->fComputation, GetEngineControl()->fConstraint); - if (fThread.AcquireRealTime(GetEngineControl()->fPriority) < 0) + if (fThread.AcquireRealTime(GetEngineControl()->fPriority) < 0) { jack_error("AcquireRealTime error"); + } else { + set_threaded_log_function(); + } } return true; } else { diff --git a/linux/alsa/alsa_rawmidi.c b/linux/alsa/alsa_rawmidi.c index 1a82a3b9..601078f4 100644 --- a/linux/alsa/alsa_rawmidi.c +++ b/linux/alsa/alsa_rawmidi.c @@ -837,6 +837,9 @@ void *midi_thread(void *arg) pfds[0].events = POLLIN|POLLERR|POLLNVAL; npfds = 1; + if (jack_is_realtime(midi->client)) + set_threaded_log_function(); + //debug_log("midi_thread(%s): enter", str->name); while (midi->keep_walking) { diff --git a/macosx/JackMachThread.cpp b/macosx/JackMachThread.cpp index 66b585f1..7ed47760 100644 --- a/macosx/JackMachThread.cpp +++ b/macosx/JackMachThread.cpp @@ -39,7 +39,7 @@ int JackMachThread::SetThreadToPriority(pthread_t thread, UInt32 inPriority, Boo theTCPolicy.constraint = AudioConvertNanosToHostTime(constraint); theTCPolicy.preemptible = true; kern_return_t res = thread_policy_set(pthread_mach_thread_np(thread), THREAD_TIME_CONSTRAINT_POLICY, (thread_policy_t) & theTCPolicy, THREAD_TIME_CONSTRAINT_POLICY_COUNT); - jack_log("JackMachThread::thread_policy_set %ld", res); + jack_log("JackMachThread::thread_policy_set res = %ld", res); return (res == KERN_SUCCESS) ? 0 : -1; } else { // OTHER THREADS @@ -62,7 +62,7 @@ int JackMachThread::SetThreadToPriority(pthread_t thread, UInt32 inPriority, Boo thePrecedencePolicy.importance = relativePriority; kern_return_t res = thread_policy_set(pthread_mach_thread_np(thread), THREAD_PRECEDENCE_POLICY, (thread_policy_t) & thePrecedencePolicy, THREAD_PRECEDENCE_POLICY_COUNT); - jack_log("JackMachThread::thread_policy_set %ld", res); + jack_log("JackMachThread::thread_policy_set res = %ld", res); return (res == KERN_SUCCESS) ? 0 : -1; } } diff --git a/windows/JackWinThread.cpp b/windows/JackWinThread.cpp index 20e91472..de133c83 100644 --- a/windows/JackWinThread.cpp +++ b/windows/JackWinThread.cpp @@ -34,9 +34,7 @@ DWORD WINAPI JackWinThread::ThreadHandler(void* arg) { JackWinThread* obj = (JackWinThread*)arg; JackRunnableInterface* runnable = obj->fRunnable; - - set_threaded_log_function(); - + // Signal creation thread when started with StartSync jack_log("ThreadHandler: start"); obj->fStatus = kIniting;