Fix add/remove ALSA-MIDI ports bug
[ardour.git] / libs / backends / alsa / alsa_audiobackend.cc
index 56fa82f24a220e055f23b2c6b6697262fbbf2fdc..15ae6f2817e9f7ec142421790746298556f94b0d 100644 (file)
@@ -692,9 +692,10 @@ AlsaAudioBackend::set_midi_device_enabled (std::string const device, bool enable
                                assert (_rmidi_out.size() > i);
                                AlsaMidiOut *rm = _rmidi_out.at(i);
                                if (rm->name () != device) { ++it; ++i; continue; }
-                               it = _system_midi_out.erase (it);
                                unregister_port (*it);
+                               it = _system_midi_out.erase (it);
                                rm->stop();
+                               assert (rm == *(_rmidi_out.begin() + i));
                                _rmidi_out.erase (_rmidi_out.begin() + i);
                                delete rm;
                        }
@@ -704,9 +705,10 @@ AlsaAudioBackend::set_midi_device_enabled (std::string const device, bool enable
                                assert (_rmidi_in.size() > i);
                                AlsaMidiIn *rm = _rmidi_in.at(i);
                                if (rm->name () != device) { ++it; ++i; continue; }
-                               it = _system_midi_in.erase (it);
                                unregister_port (*it);
+                               it = _system_midi_in.erase (it);
                                rm->stop();
+                               assert (rm == *(_rmidi_in.begin() + i));
                                _rmidi_in.erase (_rmidi_in.begin() + i);
                                delete rm;
                        }