From 3a1cfc837e269484e6f77403fef3ec3f45db354a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 24 May 2021 20:22:19 -0600 Subject: [PATCH] libardour: API infrastructure for renaming cue markers --- libs/ardour/ardour/region.h | 1 + libs/ardour/ardour/source.h | 3 ++- libs/ardour/region.cc | 9 ++++++++- libs/ardour/source.cc | 11 +++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index 69c58babe4..13ef065b70 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -376,6 +376,7 @@ public: void get_cue_markers (CueMarkers&, bool abs = false) const; void move_cue_marker (CueMarker const &, samplepos_t region_relative_position); + void rename_cue_marker (CueMarker&, std::string const &); protected: virtual XMLNode& state (); diff --git a/libs/ardour/ardour/source.h b/libs/ardour/ardour/source.h index 72303feb2d..d484709ef6 100644 --- a/libs/ardour/ardour/source.h +++ b/libs/ardour/ardour/source.h @@ -115,7 +115,8 @@ public: CueMarkers const & cue_markers() const { return _cue_markers; } void add_cue_marker (CueMarker const &); void move_cue_marker (CueMarker const &, samplepos_t source_relative_position); - bool remove_cue_marker (CueMarker const &); + bool remove_cue_marker (CueMarker const &); + void rename_cue_marker (CueMarker&, std::string const &); bool clear_cue_markers (); PBD::Signal0 CueMarkersChanged; diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index 573bfad12c..bf09ea14f8 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -1924,7 +1924,6 @@ Region::captured_xruns (XrunPositions& xruns, bool abs) const void Region::get_cue_markers (CueMarkers& cues, bool abs) const { - bool was_empty = cues.empty (); for (SourceList::const_iterator s = _sources.begin (); s != _sources.end(); ++s) { CueMarkers const& x = (*s)->cue_markers (); for (CueMarkers::const_iterator p = x.begin (); p != x.end (); ++p) { @@ -1945,6 +1944,14 @@ Region::move_cue_marker (CueMarker const & cm, samplepos_t region_relative_posit } } +void +Region::rename_cue_marker (CueMarker& cm, std::string const & str) +{ + for (SourceList::const_iterator s = _sources.begin (); s != _sources.end(); ++s) { + (*s)->rename_cue_marker (cm, str); + } +} + void Region::drop_sources () { diff --git a/libs/ardour/source.cc b/libs/ardour/source.cc index 2ed5ebf073..f4518a379f 100644 --- a/libs/ardour/source.cc +++ b/libs/ardour/source.cc @@ -432,6 +432,17 @@ Source::move_cue_marker (CueMarker const & cm, samplepos_t source_relative_posit } } +void +Source::rename_cue_marker (CueMarker& cm, std::string const & str) +{ + CueMarkers::iterator m = _cue_markers.find (cm); + + if (m != _cue_markers.end()) { + _cue_markers.erase (m); + add_cue_marker (CueMarker (str, cm.position())); + } +} + bool Source::remove_cue_marker (CueMarker const & cm) {