Browse Source

Fix in transport timebase in progress

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2054 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.71
sletz 17 years ago
parent
commit
ac8d4b32b9
1 changed files with 22 additions and 3 deletions
  1. +22
    -3
      common/JackClient.cpp

+ 22
- 3
common/JackClient.cpp View File

@@ -254,11 +254,13 @@ int JackClient::Activate()
if (StartThread() < 0)
return -1;
if (fSync != NULL) /* If a SyncCallback is pending... */
/* seems just useless
if (fSync != NULL) // If a SyncCallback is pending...
SetSyncCallback(fSync, fSyncArg);

if (fTimebase != NULL) /* If a TimebaseCallback is pending... */
if (fTimebase != NULL) // If a TimebaseCallback is pending...
SetTimebaseCallback(fConditionnal, fTimebase, fTimebaseArg);
*/
/*
Insertion of client in the graph will cause a kGraphOrderCallback notification
@@ -627,6 +629,7 @@ int JackClient::SetSyncTimeout(jack_time_t timeout)
}

/* Call the server if the client is active, otherwise keeps the arguments */
/*
int JackClient::SetTimebaseCallback(int conditional, JackTimebaseCallback timebase_callback, void* arg)
{
if (IsActive()) {
@@ -649,6 +652,22 @@ int JackClient::SetTimebaseCallback(int conditional, JackTimebaseCallback timeba
return 0;
}
}
*/

int JackClient::SetTimebaseCallback(int conditional, JackTimebaseCallback timebase_callback, void* arg)
{
int result = -1;
fChannel->SetTimebaseCallback(GetClientControl()->fRefNum, conditional, &result);
jack_log("SetTimebaseCallback result = %ld", result);
if (result == 0) {
fTimebase = timebase_callback;
fTimebaseArg = arg;
} else {
fTimebase = NULL;
fTimebaseArg = NULL;
}
return result;
}

// Must be RT safe
int JackClient::RequestNewPos(jack_position_t* pos)
@@ -755,7 +774,7 @@ void JackClient::CallTimebaseCallback()
{
JackTransportEngine& transport = GetEngineControl()->fTransport;

if (fTimebase != NULL && fTimebaseArg != NULL && GetClientControl()->fRefNum == transport.GetTimebaseMaster()) {
if (fTimebase != NULL && GetClientControl()->fRefNum == transport.GetTimebaseMaster()) {

jack_transport_state_t transport_state = transport.GetState();
jack_position_t* cur_pos = transport.WriteNextStateStart(1);


Loading…
Cancel
Save