From 331efe835faa255e4daeac1fe36aa3d6d6061c00 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 30 May 2023 18:19:48 +0200 Subject: [PATCH] Debug region/source removal --- libs/ardour/ardour/playlist.h | 2 +- libs/ardour/playlist.cc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index 40753d12b3..20cb171552 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -426,7 +426,7 @@ protected: void ripple_locked (timepos_t const & at, timecnt_t const & distance, RegionList *exclude); void ripple_unlocked (timepos_t const & at, timecnt_t const & distance, RegionList *exclude, ThawList& thawlist, bool notify = true); - virtual void region_going_away (std::weak_ptr /*region*/) {} + virtual void region_going_away (std::weak_ptr /*region*/); virtual XMLNode& state (bool) const; diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index b9076afe0a..082ea87d5f 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -662,6 +662,29 @@ Playlist::clear_pending () pending_layering = false; } +void +Playlist::region_going_away (std::weak_ptr region) +{ + if (_session.deletion_in_progress ()) { + return; + } + /* Before a region can be destroyed it must already + * be removed from all playlists. + */ +#ifndef NDEBUG + std::shared_ptr r = region.lock(); + if (!r) { + return; + } + assert (find_region (r->id ())); + { + RegionReadLock rlock (this); + assert (all_regions.find (r) != all_regions.end()); + } +#endif + //remove_region (r); +} + /************************************************************* * PLAYLIST OPERATIONS *************************************************************/