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);