mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-11 17:16:38 +01:00
Make the session watch sources' DropReferences and drop accordingly. Remove a now-redundant call to remove_source in AudioDiskstream. Make the MidiDiskstream drop references on write sources that it wants rid of, so that the sources are actually destroyed.
git-svn-id: svn://localhost/ardour2/branches/3.0@8998 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
b741c14f3e
commit
4b5a59142b
3 changed files with 3 additions and 2 deletions
|
|
@ -1404,7 +1404,6 @@ AudioDiskstream::transport_stopped_wallclock (struct tm& when, time_t twhen, boo
|
||||||
|
|
||||||
(*chan)->write_source->mark_for_remove ();
|
(*chan)->write_source->mark_for_remove ();
|
||||||
(*chan)->write_source->drop_references ();
|
(*chan)->write_source->drop_references ();
|
||||||
_session.remove_source ((*chan)->write_source);
|
|
||||||
(*chan)->write_source.reset ();
|
(*chan)->write_source.reset ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1963,7 +1962,6 @@ AudioDiskstream::reset_write_sources (bool mark_write_complete, bool /*force*/)
|
||||||
if ((*chan)->write_source->removable()) {
|
if ((*chan)->write_source->removable()) {
|
||||||
(*chan)->write_source->mark_for_remove ();
|
(*chan)->write_source->mark_for_remove ();
|
||||||
(*chan)->write_source->drop_references ();
|
(*chan)->write_source->drop_references ();
|
||||||
_session.remove_source ((*chan)->write_source);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(*chan)->write_source.reset ();
|
(*chan)->write_source.reset ();
|
||||||
|
|
|
||||||
|
|
@ -943,6 +943,7 @@ MidiDiskstream::transport_stopped_wallclock (struct tm& /*when*/, time_t /*twhen
|
||||||
|
|
||||||
if (_write_source) {
|
if (_write_source) {
|
||||||
_write_source->mark_for_remove ();
|
_write_source->mark_for_remove ();
|
||||||
|
_write_source->drop_references ();
|
||||||
_write_source.reset();
|
_write_source.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2676,6 +2676,8 @@ Session::add_source (boost::shared_ptr<Source> source)
|
||||||
Analyser::queue_source_for_analysis (source, false);
|
Analyser::queue_source_for_analysis (source, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source->DropReferences.connect_same_thread (*this, boost::bind (&Session::remove_source, this, boost::weak_ptr<Source> (source)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue