diff --git a/common/JackLibClient.cpp b/common/JackLibClient.cpp index 167cd1d7..e908a371 100644 --- a/common/JackLibClient.cpp +++ b/common/JackLibClient.cpp @@ -168,7 +168,8 @@ JackClientControl* JackLibClient::GetClientControl() const return fClientControl; } -int JackLibClient::PortConnect(const char* src, const char* dst) +int +JackLibClient::NoSelfConnectCheck(const char* src, const char* dst) { // this check is to prevent apps to self connect to other apps // TODO: make this work with multiple clients per app @@ -180,7 +181,7 @@ int JackLibClient::PortConnect(const char* src, const char* dst) client_name_ptr = GetClientControl()->fName; - //jack_info("Client '%s' connecting '%s' to '%s'", client_name_ptr, src, dst); + //jack_info("Client '%s' (dis)connecting '%s' to '%s'", client_name_ptr, src, dst); sep_ptr = strchr(src, ':'); if (sep_ptr == NULL) @@ -215,7 +216,37 @@ int JackLibClient::PortConnect(const char* src, const char* dst) } } - return JackClient::PortConnect(src, dst); + return 1; +} + +int JackLibClient::PortConnect(const char* src, const char* dst) +{ + int ret; + + //jack_info("Client connecting '%s' to '%s'"); + + ret = NoSelfConnectCheck(src, dst); + if (ret > 0) + { + return JackClient::PortConnect(src, dst); + } + + return ret; +} + +int JackLibClient::PortDisconnect(const char* src, const char* dst) +{ + int ret; + + //jack_info("Client disconnecting '%s' to '%s'"); + + ret = NoSelfConnectCheck(src, dst); + if (ret > 0) + { + return JackClient::PortDisconnect(src, dst); + } + + return ret; } } // end of namespace diff --git a/common/JackLibClient.h b/common/JackLibClient.h index 83296910..67e94c72 100644 --- a/common/JackLibClient.h +++ b/common/JackLibClient.h @@ -52,7 +52,9 @@ class JackLibClient : public JackClient JackEngineControl* GetEngineControl() const; JackClientControl* GetClientControl() const; + int NoSelfConnectCheck(const char* src, const char* dst); virtual int PortConnect(const char* src, const char* dst); + virtual int PortDisconnect(const char* src, const char* dst); };