git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1437 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.63
| @@ -2,6 +2,10 @@ | |||||
| Jackdmp changes log | Jackdmp changes log | ||||
| --------------------------- | --------------------------- | ||||
| 2007-04-01 Stephane Letz <letz@grame.fr> | |||||
| * Merge JackGraphManager Remove and Release method in a unique Release method. | |||||
| 2007-03-04 Stephane Letz <letz@grame.fr> | 2007-03-04 Stephane Letz <letz@grame.fr> | ||||
| * Dmitry Baikov patch for JackGraphManager.cpp. | * Dmitry Baikov patch for JackGraphManager.cpp. | ||||
| @@ -122,13 +122,13 @@ int JackAudioDriver::Detach() | |||||
| JackLog("JackAudioDriver::Detach\n"); | JackLog("JackAudioDriver::Detach\n"); | ||||
| for (i = 0; i < fCaptureChannels; i++) { | for (i = 0; i < fCaptureChannels; i++) { | ||||
| fGraphManager->RemovePort(fClientControl->fRefNum, fCapturePortList[i]); | |||||
| fGraphManager->ReleasePort(fClientControl->fRefNum, fCapturePortList[i]); | |||||
| } | } | ||||
| for (i = 0; i < fPlaybackChannels; i++) { | for (i = 0; i < fPlaybackChannels; i++) { | ||||
| fGraphManager->RemovePort(fClientControl->fRefNum, fPlaybackPortList[i]); | |||||
| fGraphManager->ReleasePort(fClientControl->fRefNum, fPlaybackPortList[i]); | |||||
| if (fWithMonitorPorts) | if (fWithMonitorPorts) | ||||
| fGraphManager->RemovePort(fClientControl->fRefNum, fMonitorPortList[i]); | |||||
| fGraphManager->ReleasePort(fClientControl->fRefNum, fMonitorPortList[i]); | |||||
| } | } | ||||
| return 0; | return 0; | ||||
| @@ -560,8 +560,7 @@ int JackEngine::PortUnRegister(int refnum, jack_port_id_t port_index) | |||||
| JackLog("JackEngine::PortUnRegister ref = %ld port_index = %ld\n", refnum, port_index); | JackLog("JackEngine::PortUnRegister ref = %ld port_index = %ld\n", refnum, port_index); | ||||
| assert(fClientTable[refnum]); | assert(fClientTable[refnum]); | ||||
| if (fGraphManager->RemovePort(refnum, port_index) == 0) { | |||||
| fGraphManager->ReleasePort(port_index); | |||||
| if (fGraphManager->ReleasePort(refnum, port_index) == 0) { | |||||
| NotifyPortRegistation(port_index, false); | NotifyPortRegistation(port_index, false); | ||||
| return 0; | return 0; | ||||
| } else { | } else { | ||||
| @@ -310,14 +310,16 @@ jack_port_id_t JackGraphManager::AllocatePort(int refnum, const char* port_name, | |||||
| } | } | ||||
| // Server | // Server | ||||
| /* | |||||
| void JackGraphManager::ReleasePort(jack_port_id_t port_index) | void JackGraphManager::ReleasePort(jack_port_id_t port_index) | ||||
| { | { | ||||
| JackPort* port = GetPort(port_index); | JackPort* port = GetPort(port_index); | ||||
| port->Release(); | port->Release(); | ||||
| } | } | ||||
| */ | |||||
| // Server | // Server | ||||
| int JackGraphManager::RemovePort(int refnum, jack_port_id_t port_index) | |||||
| int JackGraphManager::ReleasePort(int refnum, jack_port_id_t port_index) | |||||
| { | { | ||||
| JackConnectionManager* manager = WriteNextStateStart(); | JackConnectionManager* manager = WriteNextStateStart(); | ||||
| JackPort* port = GetPort(port_index); | JackPort* port = GetPort(port_index); | ||||
| @@ -331,6 +333,7 @@ int JackGraphManager::RemovePort(int refnum, jack_port_id_t port_index) | |||||
| res = manager->RemoveInputPort(refnum, port_index); | res = manager->RemoveInputPort(refnum, port_index); | ||||
| } | } | ||||
| port->Release(); | |||||
| WriteNextStateStop(); | WriteNextStateStop(); | ||||
| return res; | return res; | ||||
| } | } | ||||
| @@ -345,15 +348,13 @@ void JackGraphManager::RemoveAllPorts(int refnum) | |||||
| // Warning : RemovePort shift port to left, thus we always remove the first port until the "input" table is empty | // Warning : RemovePort shift port to left, thus we always remove the first port until the "input" table is empty | ||||
| const jack_int_t* input = manager->GetInputPorts(refnum); | const jack_int_t* input = manager->GetInputPorts(refnum); | ||||
| while ((port_index = input[0]) != EMPTY) { | while ((port_index = input[0]) != EMPTY) { | ||||
| RemovePort(refnum, port_index); | |||||
| ReleasePort(port_index); | |||||
| ReleasePort(refnum, port_index); | |||||
| } | } | ||||
| // Warning : RemovePort shift port to left, thus we always remove the first port until the "output" table is empty | // Warning : RemovePort shift port to left, thus we always remove the first port until the "output" table is empty | ||||
| const jack_int_t* output = manager->GetOutputPorts(refnum); | const jack_int_t* output = manager->GetOutputPorts(refnum); | ||||
| while ((port_index = output[0]) != EMPTY) { | while ((port_index = output[0]) != EMPTY) { | ||||
| RemovePort(refnum, port_index); | |||||
| ReleasePort(port_index); | |||||
| ReleasePort(refnum, port_index); | |||||
| } | } | ||||
| WriteNextStateStop(); | WriteNextStateStop(); | ||||
| @@ -58,7 +58,10 @@ class JackGraphManager : public JackShmMem, public JackAtomicState<JackConnectio | |||||
| // Ports management | // Ports management | ||||
| jack_port_id_t AllocatePort(int refnum, const char* port_name, JackPortFlags flags); | jack_port_id_t AllocatePort(int refnum, const char* port_name, JackPortFlags flags); | ||||
| void ReleasePort(jack_port_id_t port_index); | |||||
| int ReleasePort(int refnum, jack_port_id_t port_index); | |||||
| void RemoveAllPorts(int refnum); | |||||
| void DisconnectAllPorts(int refnum); | |||||
| JackPort* GetPort(jack_port_id_t index); | JackPort* GetPort(jack_port_id_t index); | ||||
| jack_port_id_t GetPort(const char* name); | jack_port_id_t GetPort(const char* name); | ||||
| jack_nframes_t GetTotalLatency(jack_port_id_t port_index); | jack_nframes_t GetTotalLatency(jack_port_id_t port_index); | ||||
| @@ -84,11 +87,7 @@ class JackGraphManager : public JackShmMem, public JackAtomicState<JackConnectio | |||||
| bool IsDirectConnection(int ref1, int ref2); | bool IsDirectConnection(int ref1, int ref2); | ||||
| void DirectConnect(int ref1, int ref2); | void DirectConnect(int ref1, int ref2); | ||||
| void DirectDisconnect(int ref1, int ref2); | void DirectDisconnect(int ref1, int ref2); | ||||
| int RemovePort(int refnum, jack_port_id_t port_index); | |||||
| void RemoveAllPorts(int refnum); | |||||
| void DisconnectAllPorts(int refnum); | |||||
| void Activate(int refnum); | void Activate(int refnum); | ||||
| void Deactivate(int refnum); | void Deactivate(int refnum); | ||||