git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1808 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.70
@@ -20,6 +20,7 @@ Tim Blechmann | |||
2008-02-01 Stephane Letz <letz@grame.fr> | |||
* Move transport related methods from JackEngine to JackServer. | |||
* Finish port connection callback server side implementation. | |||
2008-01-31 Stephane Letz <letz@grame.fr> | |||
@@ -660,16 +660,6 @@ int JackEngine::PortConnect(int refnum, const char* src, const char* dst) | |||
: PortConnect(refnum, port_src, port_dst); | |||
} | |||
int JackEngine::PortDisconnect(int refnum, const char* src, const char* dst) | |||
{ | |||
JackLog("JackEngine::PortDisconnect src = %s dst = %s\n", src, dst); | |||
jack_port_id_t port_src, port_dst; | |||
return (fGraphManager->CheckPorts(src, dst, &port_src, &port_dst) < 0) | |||
? -1 | |||
: fGraphManager->Disconnect(port_src, port_dst); | |||
} | |||
int JackEngine::PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst) | |||
{ | |||
JackLog("JackEngine::PortConnect src = %d dst = %d\n", src, dst); | |||
@@ -705,33 +695,49 @@ int JackEngine::PortConnect(int refnum, jack_port_id_t src, jack_port_id_t dst) | |||
return res; | |||
} | |||
int JackEngine::PortDisconnect(int refnum, const char* src, const char* dst) | |||
{ | |||
JackLog("JackEngine::PortDisconnect src = %s dst = %s\n", src, dst); | |||
jack_port_id_t port_src, port_dst; | |||
if (fGraphManager->CheckPorts(src, dst, &port_src, &port_dst) < 0) { | |||
return -1; | |||
} else if (fGraphManager->Disconnect(port_src, port_dst) == 0){ | |||
NotifyPortConnect(port_src, port_dst, false); | |||
return 0; | |||
} else { | |||
return -1; | |||
} | |||
} | |||
int JackEngine::PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst) | |||
{ | |||
JackLog("JackEngine::PortDisconnect src = %d dst = %d\n", src, dst); | |||
if (dst == ALL_PORTS) { | |||
/* | |||
jack_int_t connections[CONNECTION_NUM]; | |||
JackPort* port = fGraphManager->GetPort(src); | |||
jack_int_t connections[CONNECTION_NUM]; | |||
fGraphManager->GetConnections(src, connections); | |||
if (fGraphManager->DisconnectAll(src) < 0) | |||
return -1; | |||
if (port->fFlags & JackPortIsOutput) { | |||
// Notifications | |||
JackPort* port = fGraphManager->GetPort(src); | |||
if (port->GetFlags() & JackPortIsOutput) { | |||
for (int i = 0; (i < CONNECTION_NUM) && (connections[i] != EMPTY); i++) { | |||
JackLog("NotifyPortConnect src = %ld dst = %ld\n false", src, connections[i]); | |||
NotifyPortConnect(src, connections[i], false); | |||
} | |||
} else { | |||
for (int i = 0; (i < CONNECTION_NUM) && (connections[i] != EMPTY); i++) { | |||
JackLog("NotifyPortConnect src = %ld dst = %ld\n false", connections[i], src); | |||
NotifyPortConnect(connections[i], src, false); | |||
} | |||
} | |||
*/ | |||
return fGraphManager->DisconnectAll(src); | |||
} else if (fGraphManager->CheckPorts(src, dst) < 0) { | |||
return -1; | |||
} else if (fGraphManager->Disconnect(src, dst) == 0) { | |||
// Notifications | |||
NotifyPortConnect(src, dst, false); | |||
return 0; | |||
} else { | |||
@@ -225,6 +225,11 @@ void Jack_Port_Register(jack_port_id_t port, int mode, void *arg) | |||
port_callback_reg++; | |||
} | |||
void Jack_Port_Connect(jack_port_id_t a, jack_port_id_t b, int connect, void* arg) | |||
{ | |||
Log("PortConnect src = %ld dst = %ld onoff = %ld (msg from callback)\n", a, b, connect); | |||
} | |||
int Jack_Sync_Callback(jack_transport_state_t state, jack_position_t *pos, void *arg) | |||
{ | |||
int res = 0; | |||
@@ -662,6 +667,10 @@ int main (int argc, char *argv[]) | |||
printf("Error when calling jack_set_port_registration_callback() !\n"); | |||
} | |||
if (jack_set_port_connect_callback(client1, Jack_Port_Connect, 0) != 0) { | |||
printf("Error when calling jack_set_port_connect_callback() !\n"); | |||
} | |||
if (jack_set_client_registration_callback(client1, Jack_Client_Registration_Callback, 0) != 0) { | |||
printf("Error when calling jack_set_client_registration_callback() !\n"); | |||
} | |||
@@ -767,9 +776,9 @@ int main (int argc, char *argv[]) | |||
*/ | |||
if (jack_activate(client1) < 0) { | |||
printf ("Fatal error : cannot activate client1\n"); | |||
exit (1); | |||
exit(1); | |||
} | |||
/** | |||
* Test if init callback initThread have been called. | |||
* | |||
@@ -1117,7 +1126,7 @@ int main (int argc, char *argv[]) | |||
} | |||
// Check client registration callback | |||
sleep(1); | |||
jack_sleep(1000); | |||
if (client_register == 0) | |||
printf("!!! ERROR !!! Client registration callback not called!\n"); | |||
@@ -1599,6 +1608,8 @@ int main (int argc, char *argv[]) | |||
jack_port_disconnect(client1, input_port2); | |||
jack_port_disconnect(client1, output_port1); | |||
jack_port_disconnect(client1, output_port2); | |||
jack_sleep(1000); | |||
free(inports); | |||
free(outports); | |||
@@ -1825,7 +1836,7 @@ int main (int argc, char *argv[]) | |||
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | |||
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | |||
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | |||
*/ | |||
*/ | |||
if (jack_deactivate(client2) != 0) { | |||
printf("!!! ERROR !!! jack_deactivate does not return 0 for client2 !\n"); | |||