From c08931ef2c99cef3f58e0cccea99d483cf17e6a6 Mon Sep 17 00:00:00 2001 From: Nedko Arnaudov Date: Sat, 5 Dec 2009 22:50:16 +0200 Subject: [PATCH] notify about port registration when they are connectable --- common/JackEngine.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/common/JackEngine.cpp b/common/JackEngine.cpp index 77acb3ef..d1d603c1 100644 --- a/common/JackEngine.cpp +++ b/common/JackEngine.cpp @@ -664,6 +664,19 @@ int JackEngine::ClientActivate(int refnum, bool is_real_time) jack_error("JackEngine::ClientActivate wait error ref = %ld name = %s", refnum, client->GetClientControl()->fName); return -1; } else { + jack_int_t ports[PORT_NUM_FOR_CLIENT]; + int i; + + fGraphManager->GetInputPorts(refnum, ports); + for (i = 0; (i < PORT_NUM_FOR_CLIENT) && (ports[i] != EMPTY) ; i++) { + NotifyPortRegistation(ports[i], true); + } + + fGraphManager->GetOutputPorts(refnum, ports); + for (i = 0; (i < PORT_NUM_FOR_CLIENT) && (ports[i] != EMPTY) ; i++) { + NotifyPortRegistation(ports[i], true); + } + NotifyActivate(refnum); return 0; } @@ -686,11 +699,13 @@ int JackEngine::ClientDeactivate(int refnum) fGraphManager->GetInputPorts(refnum, ports); for (i = 0; (i < PORT_NUM_FOR_CLIENT) && (ports[i] != EMPTY) ; i++) { PortDisconnect(refnum, ports[i], ALL_PORTS); + NotifyPortRegistation(ports[i], false); } fGraphManager->GetOutputPorts(refnum, ports); for (i = 0; (i < PORT_NUM_FOR_CLIENT) && (ports[i] != EMPTY) ; i++) { PortDisconnect(refnum, ports[i], ALL_PORTS); + NotifyPortRegistation(ports[i], false); } fGraphManager->Deactivate(refnum); @@ -723,7 +738,6 @@ int JackEngine::PortRegister(int refnum, const char* name, const char *type, uns *port_index = fGraphManager->AllocatePort(refnum, name, type, (JackPortFlags)flags, fEngineControl->fBufferSize); if (*port_index != NO_PORT) { - NotifyPortRegistation(*port_index, true); return 0; } else { return -1; @@ -740,7 +754,6 @@ int JackEngine::PortUnRegister(int refnum, jack_port_id_t port_index) PortDisconnect(refnum, port_index, ALL_PORTS); if (fGraphManager->ReleasePort(refnum, port_index) == 0) { - NotifyPortRegistation(port_index, false); return 0; } else { return -1;