summaryrefslogtreecommitdiff
path: root/libs/ardour/location.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-11-22 22:08:40 +0100
committerRobin Gareus <robin@gareus.org>2017-11-23 00:11:55 +0100
commite275154a4023fc640315ca2640dcd63ca8f5701b (patch)
tree01fcc5f0fcaeb60045d226b8bcf5dddde7557a30 /libs/ardour/location.cc
parent84337d301842569e98bb01adb59077aa5572c926 (diff)
Introduce a dedicated "Clock Origin" Marker
Diffstat (limited to 'libs/ardour/location.cc')
-rw-r--r--libs/ardour/location.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc
index 04e36589ee..24774c5fec 100644
--- a/libs/ardour/location.cc
+++ b/libs/ardour/location.cc
@@ -479,6 +479,15 @@ Location::set_is_range_marker (bool yn, void*)
}
void
+Location::set_is_clock_origin (bool yn, void*)
+{
+ if (set_flag_internal (yn, IsClockOrigin)) {
+ flags_changed (this);
+ FlagsChanged (); /* EMIT SIGNAL */
+ }
+}
+
+void
Location::set_skip (bool yn)
{
if (is_range_marker() && length() > 0) {
@@ -800,6 +809,20 @@ Locations::set_current (Location *loc, bool want_lock)
return ret;
}
+void
+Locations::set_clock_origin (Location* loc, void *src)
+{
+ LocationList::iterator i;
+ for (i = locations.begin(); i != locations.end(); ++i) {
+ if ((*i)->is_clock_origin ()) {
+ (*i)->set_is_clock_origin (false, src);
+ }
+ if (*i == loc) {
+ (*i)->set_is_clock_origin (true, src);
+ }
+ }
+}
+
int
Locations::next_available_name(string& result,string base)
{
@@ -1401,6 +1424,17 @@ Locations::auto_punch_location () const
return 0;
}
+Location*
+Locations::clock_origin_location () const
+{
+ for (LocationList::const_iterator i = locations.begin(); i != locations.end(); ++i) {
+ if ((*i)->is_clock_origin()) {
+ return const_cast<Location*> (*i);
+ }
+ }
+ return session_range_location ();
+}
+
uint32_t
Locations::num_range_markers () const
{