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> | 2008-02-01 Stephane Letz <letz@grame.fr> | ||||
* Move transport related methods from JackEngine to JackServer. | * Move transport related methods from JackEngine to JackServer. | ||||
* Finish port connection callback server side implementation. | |||||
2008-01-31 Stephane Letz <letz@grame.fr> | 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); | : 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) | 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); | 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; | 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) | 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); | JackLog("JackEngine::PortDisconnect src = %d dst = %d\n", src, dst); | ||||
if (dst == ALL_PORTS) { | 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); | 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++) { | 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); | NotifyPortConnect(src, connections[i], false); | ||||
} | } | ||||
} else { | } else { | ||||
for (int i = 0; (i < CONNECTION_NUM) && (connections[i] != EMPTY); i++) { | 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); | NotifyPortConnect(connections[i], src, false); | ||||
} | } | ||||
} | } | ||||
*/ | |||||
return fGraphManager->DisconnectAll(src); | return fGraphManager->DisconnectAll(src); | ||||
} else if (fGraphManager->CheckPorts(src, dst) < 0) { | } else if (fGraphManager->CheckPorts(src, dst) < 0) { | ||||
return -1; | return -1; | ||||
} else if (fGraphManager->Disconnect(src, dst) == 0) { | } else if (fGraphManager->Disconnect(src, dst) == 0) { | ||||
// Notifications | |||||
NotifyPortConnect(src, dst, false); | NotifyPortConnect(src, dst, false); | ||||
return 0; | return 0; | ||||
} else { | } else { | ||||
@@ -225,6 +225,11 @@ void Jack_Port_Register(jack_port_id_t port, int mode, void *arg) | |||||
port_callback_reg++; | 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 Jack_Sync_Callback(jack_transport_state_t state, jack_position_t *pos, void *arg) | ||||
{ | { | ||||
int res = 0; | int res = 0; | ||||
@@ -662,6 +667,10 @@ int main (int argc, char *argv[]) | |||||
printf("Error when calling jack_set_port_registration_callback() !\n"); | 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) { | if (jack_set_client_registration_callback(client1, Jack_Client_Registration_Callback, 0) != 0) { | ||||
printf("Error when calling jack_set_client_registration_callback() !\n"); | 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) { | if (jack_activate(client1) < 0) { | ||||
printf ("Fatal error : cannot activate client1\n"); | printf ("Fatal error : cannot activate client1\n"); | ||||
exit (1); | |||||
exit(1); | |||||
} | } | ||||
/** | /** | ||||
* Test if init callback initThread have been called. | * Test if init callback initThread have been called. | ||||
* | * | ||||
@@ -1117,7 +1126,7 @@ int main (int argc, char *argv[]) | |||||
} | } | ||||
// Check client registration callback | // Check client registration callback | ||||
sleep(1); | |||||
jack_sleep(1000); | |||||
if (client_register == 0) | if (client_register == 0) | ||||
printf("!!! ERROR !!! Client registration callback not called!\n"); | 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, input_port2); | ||||
jack_port_disconnect(client1, output_port1); | jack_port_disconnect(client1, output_port1); | ||||
jack_port_disconnect(client1, output_port2); | jack_port_disconnect(client1, output_port2); | ||||
jack_sleep(1000); | |||||
free(inports); | free(inports); | ||||
free(outports); | free(outports); | ||||
@@ -1825,7 +1836,7 @@ int main (int argc, char *argv[]) | |||||
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | ||||
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | ||||
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* | ||||
*/ | |||||
*/ | |||||
if (jack_deactivate(client2) != 0) { | if (jack_deactivate(client2) != 0) { | ||||
printf("!!! ERROR !!! jack_deactivate does not return 0 for client2 !\n"); | printf("!!! ERROR !!! jack_deactivate does not return 0 for client2 !\n"); | ||||