From ab791658936a24d2df69102d07c430b38db8ca32 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 19 Mar 2019 03:02:30 +0100 Subject: [PATCH] Fix Playlist refcount when deleting track Both Disk-reader and Disk-writer use the same playlist. ARDOUR::Track::use_playlist() sets it for both Disk-IO processors, so it needs to be released by both on destruction. --- libs/ardour/disk_io.cc | 6 ++++++ libs/ardour/disk_reader.cc | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libs/ardour/disk_io.cc b/libs/ardour/disk_io.cc index 4c7b77335d..72678304e2 100644 --- a/libs/ardour/disk_io.cc +++ b/libs/ardour/disk_io.cc @@ -78,6 +78,12 @@ DiskIOProcessor::~DiskIOProcessor () channels.flush (); delete _midi_buf; + + for (uint32_t n = 0; n < DataType::num_types; ++n) { + if (_playlists[n]) { + _playlists[n]->release (); + } + } } diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc index 4622d14a8f..cef82639fe 100644 --- a/libs/ardour/disk_reader.cc +++ b/libs/ardour/disk_reader.cc @@ -68,12 +68,6 @@ DiskReader::DiskReader (Session& s, string const & str, DiskIOProcessor::Flag f) DiskReader::~DiskReader () { DEBUG_TRACE (DEBUG::Destruction, string_compose ("DiskReader %1 @ %2 deleted\n", _name, this)); - - for (uint32_t n = 0; n < DataType::num_types; ++n) { - if (_playlists[n]) { - _playlists[n]->release (); - } - } } void