diff options
author | Carl Hetherington <carl@carlh.net> | 2010-04-27 00:57:46 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-04-27 00:57:46 +0000 |
commit | 581376e0ed7d8934b384766ee4500dd6abeb755d (patch) | |
tree | 7c420c721e6e93fb9722e3ce72698f1981b1a3ca /libs/ardour/session.cc | |
parent | 83b30a6d0609f1778f8ec8a25eac298714a0a4f2 (diff) |
Make Session::audible_frame() return a (more) correct answer when the transport has changed direction since it last started rolling. Fixes some playhead anomolies when reversing the transport.
git-svn-id: svn://localhost/ardour2/branches/3.0@6999 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 56e4660125..4ac6f9ebbc 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1104,17 +1104,20 @@ Session::audible_frame () const /* MOVING */ - /* check to see if we have passed the first guaranteed + /* Check to see if we have passed the first guaranteed audible frame past our last start position. if not, return that last start point because in terms of audible frames, we have not moved yet. + + `Start position' in this context means the time we last + either started or changed transport direction. */ if (_transport_speed > 0.0f) { if (!play_loop || !have_looped) { - if (tf < _last_roll_location + offset) { - return _last_roll_location; + if (tf < _last_roll_or_reversal_location + offset) { + return _last_roll_or_reversal_location; } } @@ -1126,8 +1129,8 @@ Session::audible_frame () const /* XXX wot? no backward looping? */ - if (tf > _last_roll_location - offset) { - return _last_roll_location; + if (tf > _last_roll_or_reversal_location - offset) { + return _last_roll_or_reversal_location; } else { /* backwards */ ret += offset; |