From 951257909f4330befb6c9f308393b00a8a0d205a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 16 Mar 2021 16:49:38 -0600 Subject: [PATCH] Location API to remove xrun markers --- libs/ardour/ardour/location.h | 1 + libs/ardour/location.cc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/libs/ardour/ardour/location.h b/libs/ardour/ardour/location.h index 2ccc8cc486..a74896f7db 100644 --- a/libs/ardour/ardour/location.h +++ b/libs/ardour/ardour/location.h @@ -202,6 +202,7 @@ public: void remove (Location *); void clear (); void clear_markers (); + void clear_xrun_markers (); void clear_ranges (); XMLNode& get_state (void); diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index 6bed11e38f..9b620f147a 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -952,6 +952,29 @@ Locations::clear_markers () changed (); /* EMIT SIGNAL */ } +void +Locations::clear_xrun_markers () +{ + { + Glib::Threads::Mutex::Lock lm (lock); + LocationList::iterator tmp; + + for (LocationList::iterator i = locations.begin(); i != locations.end(); ) { + tmp = i; + ++tmp; + + if ((*i)->is_xrun()) { + delete *i; + locations.erase (i); + } + + i = tmp; + } + } + + changed (); /* EMIT SIGNAL */ +} + void Locations::clear_ranges () {