controllables.clear ();
for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ++i) {
+ (*i)->connection.disconnect();
+ if ((*i)->own_mc) {
+ delete (*i)->mc;
+ }
delete *i;
}
pending_controllables.clear ();
{
Glib::Threads::Mutex::Lock lm (pending_lock);
- MIDIPendingControllables::iterator ptmp;
for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ) {
- ptmp = i;
- ++ptmp;
if (((*i)->mc)->get_controllable() == c) {
+ (*i)->connection.disconnect();
if ((*i)->own_mc) {
delete (*i)->mc;
}
- (*i)->connection.disconnect();
delete *i;
- pending_controllables.erase (i);
+ i = pending_controllables.erase (i);
+ } else {
+ ++i;
}
- i = ptmp;
}
}
Glib::Threads::Mutex::Lock lm (pending_lock);
Glib::Threads::Mutex::Lock lm2 (controllables_lock);
- MIDIPendingControllables::iterator tmp;
-
for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ) {
- tmp = i;
- ++tmp;
-
if ( (*i)->mc == mc) {
(*i)->connection.disconnect();
delete *i;
- pending_controllables.erase(i);
+ i = pending_controllables.erase(i);
+ } else {
+ ++i;
}
-
- i = tmp;
}
/* add the controllable for which learning stopped to our list of
{
Glib::Threads::Mutex::Lock lm (pending_lock);
for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ++i) {
+ (*i)->connection.disconnect();
+ if ((*i)->own_mc) {
+ delete (*i)->mc;
+ }
delete *i;
}
pending_controllables.clear ();
if (mc->set_state (**niter, version) == 0) {
controllables.push_back (mc);
+ } else {
+ warning << string_compose ("Generic MIDI control: Failed to set state for Control ID: %1\n", id.to_s());
+ delete mc;
}
} else {
if (child->property ("uri")) {
/* controllable */
+ Glib::Threads::Mutex::Lock lm2 (controllables_lock);
if ((mc = create_binding (*child)) != 0) {
- Glib::Threads::Mutex::Lock lm2 (controllables_lock);
controllables.push_back (mc);
}