DiskWriter needs to drop source refs in its destructor.
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 5 Jul 2017 19:07:37 +0000 (15:07 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 18 Sep 2017 15:40:53 +0000 (11:40 -0400)
SerializedRCUManager can't do this by itself

libs/ardour/disk_writer.cc

index 1e248dcdc0fe5e1756287731f4bd93d725b24f68..ac9bcade02e02008ea7983d34d8d256940ce81b7 100644 (file)
@@ -67,6 +67,12 @@ DiskWriter::DiskWriter (Session& s, string const & str, DiskIOProcessor::Flag f)
 DiskWriter::~DiskWriter ()
 {
        DEBUG_TRACE (DEBUG::Destruction, string_compose ("DiskWriter %1 @ %2 deleted\n", _name, this));
+
+       boost::shared_ptr<ChannelList> c = channels.reader();
+
+       for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) {
+               (*chan)->write_source.reset ();
+       }
 }
 
 framecnt_t