diff options
author | Carl Hetherington <carl@carlh.net> | 2010-04-26 21:29:47 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-04-26 21:29:47 +0000 |
commit | e112ed3d6abf631b1f42ea41bb1046ed1cd939df (patch) | |
tree | 6b603c95cde1076e26dec434ea364fc0e94fdb21 /libs | |
parent | e55f93ff61d7acb1a9a727485b3662efc2390761 (diff) |
Make Session listen to DropReferences from Sources, and remove them. Call drop_references for a Source in one imnportant case which occurs during MIDI track creation.
git-svn-id: svn://localhost/ardour2/branches/3.0@6996 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/midi_diskstream.cc | 1 | ||||
-rw-r--r-- | libs/ardour/session.cc | 1 |
2 files changed, 2 insertions, 0 deletions
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> source) } if (result.second) { + source->DropReferences.connect_same_thread (*this, boost::bind (&Session::remove_source, this, boost::weak_ptr<Source> (source))); set_dirty(); } |