diff options
author | Carl Hetherington <carl@carlh.net> | 2010-04-22 00:20:57 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-04-22 00:20:57 +0000 |
commit | bc8a459dbec431db5489ef8826572616970062ca (patch) | |
tree | b334d7476debd9f184d82cffc7b40f4b108945c9 /libs/ardour/location.cc | |
parent | b32efee4b3baaf306273a085416fbb79167a1858 (diff) |
Clean up some location handling bits; should fix update of editor summary when session start/end is moved.
git-svn-id: svn://localhost/ardour2/branches/3.0@6948 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/location.cc')
-rw-r--r-- | libs/ardour/location.cc | 80 |
1 files changed, 24 insertions, 56 deletions
diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index d3fc3b0d41..6aa2f8faed 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -89,32 +89,27 @@ Location::set_start (nframes64_t s) return -1; } + if (((is_auto_punch() || is_auto_loop()) && s >= _end) || s > _end) { + return -1; + } + if (is_mark()) { if (_start != s) { - _start = s; _end = s; - - start_changed(this); /* EMIT SIGNAL */ - end_changed(this); /* EMIT SIGNAL */ - + start_changed (this); /* EMIT SIGNAL */ + end_changed (this); /* EMIT SIGNAL */ } return 0; } - if (is_session_range()) { - start_changed (this); /* EMIT SIGNAL */ - Session::StartTimeChanged (); /* EMIT SIGNAL */ - AudioFileSource::set_header_position_offset (s); - } - - if (((is_auto_punch() || is_auto_loop()) && s >= _end) || s > _end) { - return -1; - } - if (s != _start) { _start = s; - start_changed(this); /* EMIT SIGNAL */ + start_changed (this); /* EMIT SIGNAL */ + if (is_session_range ()) { + Session::StartTimeChanged (); /* EMIT SIGNAL */ + AudioFileSource::set_header_position_offset (s); + } } return 0; @@ -127,56 +122,37 @@ Location::set_end (nframes64_t e) return -1; } + if (((is_auto_punch() || is_auto_loop()) && e <= _start) || e < _start) { + return -1; + } + if (is_mark()) { if (_start != e) { _start = e; _end = e; - start_changed(this); /* EMIT SIGNAL */ - end_changed(this); /* EMIT SIGNAL */ + start_changed (this); /* EMIT SIGNAL */ + end_changed (this); /* EMIT SIGNAL */ } return 0; } - if (is_session_range()) { + if (e != _end) { _end = e; - end_changed (this); /* EMIT SIGNAL */ - Session::EndTimeChanged (); /* EMIT SIGNAL */ - } + end_changed(this); /* EMIT SIGNAL */ - if (((is_auto_punch() || is_auto_loop()) && e <= _start) || e < _start) { - return -1; + if (is_session_range()) { + Session::EndTimeChanged (); /* EMIT SIGNAL */ + } } - if (e != _end) { - _end = e; - end_changed(this); /* EMIT SIGNAL */ - } return 0; } int Location::set (nframes64_t start, nframes64_t end) { - if (_locked) { - return -1; - } - - if (is_mark() && start != end) { - return -1; - } else if (((is_auto_punch() || is_auto_loop()) && start >= end) || (start > end)) { - return -1; - } - - if (_start != start) { - _start = start; - start_changed(this); /* EMIT SIGNAL */ - } - - if (_end != end) { - _end = end; - end_changed(this); /* EMIT SIGNAL */ - } - return 0; + set_start (start); + set_end (end); } int @@ -221,14 +197,6 @@ Location::set_cd (bool yn, void *src) } void -Location::set_is_session_range (bool yn, void *src) -{ - if (set_flag_internal (yn, IsSessionRange)) { - FlagsChanged (this, src); /* EMIT SIGNAL */ - } -} - -void Location::set_is_range_marker (bool yn, void *src) { if (set_flag_internal (yn, IsRangeMarker)) { |