diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index 8b047490e7..f45331a5b1 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -1323,6 +1323,7 @@ MidiDiskstream::use_new_write_source (uint32_t n) if (_write_source->is_empty ()) { _write_source->mark_for_remove (); + _write_source->drop_references (); _write_source.reset(); } else { _write_source.reset(); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 9cf48b7154..56e4660125 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2424,6 +2424,7 @@ Session::add_source (boost::shared_ptr source) } if (result.second) { + source->DropReferences.connect_same_thread (*this, boost::bind (&Session::remove_source, this, boost::weak_ptr (source))); set_dirty(); }