diff --git a/common/JackClient.cpp b/common/JackClient.cpp index 4070d0d0..4b5876d8 100644 --- a/common/JackClient.cpp +++ b/common/JackClient.cpp @@ -993,8 +993,7 @@ int JackClient::SetInitCallback(JackThreadInitCallback callback, void *arg) fInitArg = arg; fInit = callback; /* make sure that the message buffer thread is initialized too */ - JackMessageBuffer::fInstance->SetInitCallback(callback, arg); - return 0; + return JackMessageBuffer::fInstance->SetInitCallback(callback, arg); } } diff --git a/common/JackMessageBuffer.cpp b/common/JackMessageBuffer.cpp index 401a116e..168fabe8 100644 --- a/common/JackMessageBuffer.cpp +++ b/common/JackMessageBuffer.cpp @@ -44,10 +44,12 @@ JackMessageBuffer::~JackMessageBuffer() bool JackMessageBuffer::Start() { + // Before StartSync()... + fRunning = true; if (fThread.StartSync() == 0) { - fRunning = true; return true; } else { + fRunning = false; return false; } } @@ -159,9 +161,9 @@ void JackMessageBufferAdd(int level, const char *message) } } -void JackMessageBuffer::SetInitCallback(JackThreadInitCallback callback, void *arg) +int JackMessageBuffer::SetInitCallback(JackThreadInitCallback callback, void *arg) { - if (fInstance && fInit && fRunning && fGuard.Lock()) { + if (fInstance && callback && fRunning && fGuard.Lock()) { /* set up the callback */ fInitArg = arg; fInit = callback; @@ -171,8 +173,10 @@ void JackMessageBuffer::SetInitCallback(JackThreadInitCallback callback, void *a fGuard.Wait(); /* and we're done */ fGuard.Unlock(); + return 0; } else { jack_error("JackMessageBuffer::SetInitCallback : callback cannot be executed"); + return -1; } } diff --git a/common/JackMessageBuffer.h b/common/JackMessageBuffer.h index c76b9fb5..db57e220 100644 --- a/common/JackMessageBuffer.h +++ b/common/JackMessageBuffer.h @@ -84,7 +84,7 @@ class JackMessageBuffer : public JackRunnableInterface bool static Destroy(); void AddMessage(int level, const char *message); - void SetInitCallback(JackThreadInitCallback callback, void *arg); + int SetInitCallback(JackThreadInitCallback callback, void *arg); static JackMessageBuffer* fInstance; };