diff options
Diffstat (limited to 'libs/ardour/location.cc')
-rw-r--r-- | libs/ardour/location.cc | 34 |
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 { |