From 6e1e12b0160b4c819332f400b071e510e00acd1e Mon Sep 17 00:00:00 2001 From: nedko Date: Sun, 31 May 2009 12:36:19 +0000 Subject: [PATCH 1/2] JackGraphManager::CheckPorts (with get) -> JackGraphManager::GetTwoPorts This makes PortConnect and PortDisconnect (string variants) implementations identical (cherry picked from commit ab9ef939b5178110cd2689ff6d95466ce88c35f2) git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3555 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/JackEngine.cpp | 13 ++++--------- common/JackGraphManager.cpp | 4 ++-- common/JackGraphManager.h | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/common/JackEngine.cpp b/common/JackEngine.cpp index 7e94e42f..95db61dc 100644 --- a/common/JackEngine.cpp +++ b/common/JackEngine.cpp @@ -741,7 +741,7 @@ int JackEngine::PortConnect(int refnum, const char* src, const char* dst) jack_log("JackEngine::PortConnect src = %s dst = %s", src, dst); jack_port_id_t port_src, port_dst; - return (fGraphManager->CheckPorts(src, dst, &port_src, &port_dst) < 0) + return (fGraphManager->GetTwoPorts(src, dst, &port_src, &port_dst) < 0) ? -1 : PortConnect(refnum, port_src, port_dst); } @@ -788,14 +788,9 @@ int JackEngine::PortDisconnect(int refnum, const char* src, const char* dst) AssertRefnum(refnum); 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; - } + return (fGraphManager->GetTwoPorts(src, dst, &port_src, &port_dst) < 0) + ? -1 + : PortDisconnect(refnum, port_src, port_dst); } int JackEngine::PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t dst) diff --git a/common/JackGraphManager.cpp b/common/JackGraphManager.cpp index ae5f3351..f6aae030 100644 --- a/common/JackGraphManager.cpp +++ b/common/JackGraphManager.cpp @@ -627,7 +627,7 @@ int JackGraphManager::CheckPorts(jack_port_id_t port_src, jack_port_id_t port_ds return 0; } -int JackGraphManager::CheckPorts(const char* src_name, const char* dst_name, jack_port_id_t* port_src, jack_port_id_t* port_dst) +int JackGraphManager::GetTwoPorts(const char* src_name, const char* dst_name, jack_port_id_t* port_src, jack_port_id_t* port_dst) { jack_log("JackGraphManager::CheckConnect src_name = %s dst_name = %s", src_name, dst_name); @@ -641,7 +641,7 @@ int JackGraphManager::CheckPorts(const char* src_name, const char* dst_name, jac return -1; } - return CheckPorts(*port_src, *port_dst); + return 0; } // Client : port array diff --git a/common/JackGraphManager.h b/common/JackGraphManager.h index 575e3752..0fdd3c82 100644 --- a/common/JackGraphManager.h +++ b/common/JackGraphManager.h @@ -91,7 +91,7 @@ class SERVER_EXPORT JackGraphManager : public JackShmMem, public JackAtomicState void GetConnections(jack_port_id_t port_index, jack_int_t* connections); // TODO const char** GetPorts(const char* port_name_pattern, const char* type_name_pattern, unsigned long flags); - int CheckPorts(const char* src, const char* dst, jack_port_id_t* src_index, jack_port_id_t* dst_index); + int GetTwoPorts(const char* src, const char* dst, jack_port_id_t* src_index, jack_port_id_t* dst_index); int CheckPorts(jack_port_id_t port_src, jack_port_id_t port_dst); void DisconnectAllInput(jack_port_id_t port_index); From d8f4e5d37694769ae9471fe47a6ebeac91d5b7bc Mon Sep 17 00:00:00 2001 From: nedko Date: Sun, 31 May 2009 12:36:33 +0000 Subject: [PATCH 2/2] When disconnect of all ports is requested, disconnect ports one by one * This improves notifications * Allows no-self-connect code to be hooked to single place in disconnect code. (cherry picked from commit ddd38f542c3f744ac6e5bbec48480742102d0252) git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3556 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/JackEngine.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/common/JackEngine.cpp b/common/JackEngine.cpp index 95db61dc..65382e78 100644 --- a/common/JackEngine.cpp +++ b/common/JackEngine.cpp @@ -803,21 +803,23 @@ int JackEngine::PortDisconnect(int refnum, jack_port_id_t src, jack_port_id_t ds jack_int_t connections[CONNECTION_NUM_FOR_PORT]; fGraphManager->GetConnections(src, connections); - // Notifications JackPort* port = fGraphManager->GetPort(src); + int ret = 0; if (port->GetFlags() & JackPortIsOutput) { for (int i = 0; (i < CONNECTION_NUM_FOR_PORT) && (connections[i] != EMPTY); i++) { - jack_log("NotifyPortConnect src = %ld dst = %ld false", src, connections[i]); - NotifyPortConnect(src, connections[i], false); + if (PortDisconnect(refnum, src, connections[i]) != 0) { + ret = -1; + } } } else { for (int i = 0; (i < CONNECTION_NUM_FOR_PORT) && (connections[i] != EMPTY); i++) { - jack_log("NotifyPortConnect src = %ld dst = %ld false", connections[i], src); - NotifyPortConnect(connections[i], src, false); + if (PortDisconnect(refnum, connections[i], src) != 0) { + ret = -1; + } } } - return fGraphManager->DisconnectAll(src); + return ret; } else if (fGraphManager->CheckPorts(src, dst) < 0) { return -1; } else if (fGraphManager->Disconnect(src, dst) == 0) {