From c4f6385d229b6cec4d8265da644fcdc82391fd96 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 27 Sep 2023 22:15:25 +0200 Subject: [PATCH] Fix playlist partitioning when mixing time domains --- libs/ardour/ardour/playlist.h | 2 +- libs/ardour/playlist.cc | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index ed4ca9e0c9..ebc0e98fbb 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -435,7 +435,7 @@ protected: int remove_region_internal (std::shared_ptr, ThawList& thawlist); void copy_regions (RegionList&) const; - void partition_internal (timepos_t const & start, timepos_t const & end, bool cutting, ThawList& thawlist); + void partition_internal (timepos_t start, timepos_t end, bool cutting, ThawList& thawlist); std::pair _get_extent() const; diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 0fb2a7ec1d..6cfe91bb8a 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -988,8 +988,15 @@ Playlist::partition (timepos_t const & start, timepos_t const & end, bool cut) * removed. */ void -Playlist::partition_internal (timepos_t const & start, timepos_t const & end, bool cutting, ThawList& thawlist) +Playlist::partition_internal (timepos_t start, timepos_t end, bool cutting, ThawList& thawlist) { + if (start.time_domain () != end.time_domain () || start.time_domain () != time_domain () || end.time_domain () != time_domain ()) { + warning << string_compose (_("Playlist::partition_internal() with time domains mismatch %1 %2 (expected %3 time)"), start, end, time_domain () == Temporal::AudioTime ? "audio" : " music") << endmsg; + } + + start.set_time_domain (time_domain ()); + end.set_time_domain (time_domain ()); + RegionList new_regions; {