diff --git a/common/JackAPI.cpp b/common/JackAPI.cpp index 21e777d7..22906b5f 100644 --- a/common/JackAPI.cpp +++ b/common/JackAPI.cpp @@ -1331,7 +1331,7 @@ EXPORT pthread_t jack_client_thread_id(jack_client_t* ext_client) } } -EXPORT char* jack_get_client_name (jack_client_t* ext_client) +EXPORT char* jack_get_client_name(jack_client_t* ext_client) { #ifdef __CLIENTDEBUG__ JackLibGlobals::CheckContext(); diff --git a/common/JackClient.cpp b/common/JackClient.cpp index 2a216502..99293674 100644 --- a/common/JackClient.cpp +++ b/common/JackClient.cpp @@ -709,8 +709,12 @@ void JackClient::CallSyncCallback() void JackClient::CallTimebaseCallback() { JackTransportEngine& transport = GetEngineControl()->fTransport; + int master; + bool unused; - if (GetClientControl()->fRefNum == transport.GetTimebaseMaster() && fTimebase) { // Client *is* timebase... + transport.GetTimebaseMaster(master, unused); + + if (GetClientControl()->fRefNum == master && fTimebase) { // Client *is* timebase... jack_transport_state_t transport_state = transport.GetState(); jack_position_t* cur_pos = transport.WriteNextStateStart(1); diff --git a/common/JackServer.cpp b/common/JackServer.cpp index 9e940289..e5266c8a 100644 --- a/common/JackServer.cpp +++ b/common/JackServer.cpp @@ -305,7 +305,7 @@ int JackServer::ReleaseTimebase(int refnum) int JackServer::SetTimebaseCallback(int refnum, int conditional) { - return fEngineControl->fTransport.SetTimebase(refnum, conditional); + return fEngineControl->fTransport.SetTimebaseMaster(refnum, conditional); } JackLockedEngine* JackServer::GetEngine() diff --git a/common/JackTransportEngine.cpp b/common/JackTransportEngine.cpp index ea2546ec..d07e13f8 100644 --- a/common/JackTransportEngine.cpp +++ b/common/JackTransportEngine.cpp @@ -44,6 +44,7 @@ JackTransportEngine::JackTransportEngine(): JackAtomicArrayState 0) { if (refnum != fTimeBaseMaster) { @@ -83,11 +84,18 @@ int JackTransportEngine::SetTimebase(int refnum, bool conditionnal) } } else { fTimeBaseMaster = refnum; + fConditionnal = conditionnal; jack_log("new timebase master: ref = %ld", refnum); return 0; } } +void JackTransportEngine::GetTimebaseMaster(int& refnum, bool& conditionnal) +{ + refnum = fTimeBaseMaster; + conditionnal = fConditionnal; +} + // RT bool JackTransportEngine::CheckAllRolling(JackClientInterface** table) { diff --git a/common/JackTransportEngine.h b/common/JackTransportEngine.h index 81059598..a7a8d7b0 100644 --- a/common/JackTransportEngine.h +++ b/common/JackTransportEngine.h @@ -102,6 +102,7 @@ class EXPORT JackTransportEngine : public JackAtomicArrayState int fTimeBaseMaster; bool fPendingPos; bool fNetworkSync; + bool fConditionnal; SInt32 fWriteCounter; bool CheckAllRolling(JackClientInterface** table); @@ -128,16 +129,11 @@ class EXPORT JackTransportEngine : public JackAtomicArrayState return fTransportState; } - void GetState(jack_transport_state_t state) + void SetState(jack_transport_state_t state) { fTransportState = state; } - - int GetTimebaseMaster() const - { - return fTimeBaseMaster; - } - + /* \brief */ @@ -146,7 +142,9 @@ class EXPORT JackTransportEngine : public JackAtomicArrayState /* \brief */ - int SetTimebase(int refnum, bool conditionnal); + int SetTimebaseMaster(int refnum, bool conditionnal); + + void GetTimebaseMaster(int& refnum, bool& conditionnal); /* \brief