mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 12:16:30 +01:00
Make sure ControlProtocolInfo objects are also cleaned up when
disconnecting from a session. git-svn-id: svn://localhost/ardour2/trunk@1118 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
638336eee5
commit
75c3b147f1
1 changed files with 22 additions and 0 deletions
|
|
@ -37,6 +37,13 @@ ControlProtocolManager::~ControlProtocolManager()
|
||||||
|
|
||||||
control_protocols.clear ();
|
control_protocols.clear ();
|
||||||
|
|
||||||
|
|
||||||
|
for (list<ControlProtocolInfo*>::iterator p = control_protocol_info.begin(); p != control_protocol_info.end(); ++p) {
|
||||||
|
delete (*p);
|
||||||
|
}
|
||||||
|
|
||||||
|
control_protocol_info.clear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -68,6 +75,12 @@ ControlProtocolManager::drop_session ()
|
||||||
delete *p;
|
delete *p;
|
||||||
}
|
}
|
||||||
control_protocols.clear ();
|
control_protocols.clear ();
|
||||||
|
|
||||||
|
for (list<ControlProtocolInfo*>::iterator p = control_protocol_info.begin(); p != control_protocol_info.end(); ++p) {
|
||||||
|
delete *p;
|
||||||
|
}
|
||||||
|
|
||||||
|
control_protocol_info.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,6 +135,15 @@ ControlProtocolManager::teardown (ControlProtocolInfo& cpi)
|
||||||
list<ControlProtocol*>::iterator p = find (control_protocols.begin(), control_protocols.end(), cpi.protocol);
|
list<ControlProtocol*>::iterator p = find (control_protocols.begin(), control_protocols.end(), cpi.protocol);
|
||||||
if (p != control_protocols.end()) {
|
if (p != control_protocols.end()) {
|
||||||
control_protocols.erase (p);
|
control_protocols.erase (p);
|
||||||
|
} else {
|
||||||
|
cerr << "Programming error: ControlProtocolManager::teardown() called for " << cpi.name << ", but it was not found in control_protocols" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
list<ControlProtocolInfo*>::iterator p2 = find (control_protocol_info.begin(), control_protocol_info.end(), &cpi);
|
||||||
|
if (p2 != control_protocol_info.end()) {
|
||||||
|
control_protocol_info.erase (p2);
|
||||||
|
} else {
|
||||||
|
cerr << "Programming error: ControlProtocolManager::teardown() called for " << cpi.name << ", but it was not found in control_protocol_info" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue