summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2012-12-21 22:47:38 +0000
committerRobin Gareus <robin@gareus.org>2012-12-21 22:47:38 +0000
commit1d7e9daea431466cb4efb1ec2789009109daba02 (patch)
tree2bc9643be983527192e4911864b9b2a27d13140e
parentd01a9599a4edf27d0de5da0a462e64db3401d511 (diff)
fix for problem when reverse playback hits 00:00:00:00 (may be incomplete)
should fix #5221 git-svn-id: svn://localhost/ardour2/branches/3.0@13708 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/session_process.cc1
-rw-r--r--libs/ardour/session_transport.cc2
2 files changed, 3 insertions, 0 deletions
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc
index 05b800fead..0a44829bd2 100644
--- a/libs/ardour/session_process.cc
+++ b/libs/ardour/session_process.cc
@@ -349,6 +349,7 @@ Session::process_with_events (pframes_t nframes)
}
end_frame = _transport_frame + frames_moved;
+ _transport_frame = std::max((ARDOUR::framepos_t) 0, _transport_frame);
{
SessionEvent* this_event;
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 037ca83484..693074cf9a 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -851,6 +851,7 @@ Session::micro_locate (framecnt_t distance)
}
_transport_frame += distance;
+ _transport_frame = std::max((ARDOUR::framepos_t) 0, _transport_frame);
return 0;
}
@@ -896,6 +897,7 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool
// Update Timecode time
// [DR] FIXME: find out exactly where this should go below
+ target_frame = std::max((ARDOUR::framepos_t) 0, target_frame);
_transport_frame = target_frame;
_last_roll_or_reversal_location = target_frame;
timecode_time(_transport_frame, transmitting_timecode_time);