ignore negative value locates and MMC locate commands
[ardour.git] / libs / ardour / session_process.cc
index 6083412d63d8d1e4479db9353b5134cc5c2040a4..497fbd4d2e1f437f32484f586300cc58e6f95a28 100644 (file)
@@ -154,11 +154,6 @@ Session::process_routes (pframes_t nframes, bool& need_butler)
        int  declick = get_transport_declick_required();
        boost::shared_ptr<RouteList> r = routes.reader ();
 
-       if (transport_sub_state & StopPendingCapture) {
-               /* force a declick out */
-               declick = -1;
-       }
-
        const framepos_t start_frame = _transport_frame;
        const framepos_t end_frame = _transport_frame + floor (nframes * _transport_speed);
        
@@ -581,7 +576,7 @@ Session::follow_slave (pframes_t nframes)
 #endif
 
                        if (_slave->give_slave_full_control_over_transport_speed()) {
-                               set_transport_speed (slave_speed, false, false);
+                               set_transport_speed (slave_speed, 0, false, false);
                                //std::cout << "set speed = " << slave_speed << "\n";
                        } else {
                                float adjusted_speed = slave_speed + (1.5 * (delta /  float(_current_frame_rate)));
@@ -1062,10 +1057,12 @@ Session::process_event (SessionEvent* ev)
                break;
 
        case SessionEvent::Skip:
-               start_locate (ev->target_frame, true, true, false);
+               if (Config->get_skip_playback()) {
+                       start_locate (ev->target_frame, true, true, false);
+                       _send_timecode_update = true;
+               }
                remove = false;
                del = false;
-               _send_timecode_update = true;
                break;
 
        case SessionEvent::LocateRollLocate:
@@ -1076,7 +1073,7 @@ Session::process_event (SessionEvent* ev)
 
 
        case SessionEvent::SetTransportSpeed:
-               set_transport_speed (ev->speed, ev->yes_or_no, ev->second_yes_or_no, ev->third_yes_or_no);
+               set_transport_speed (ev->speed, ev->target_frame, ev->yes_or_no, ev->second_yes_or_no, ev->third_yes_or_no);
                break;
 
        case SessionEvent::PunchIn:
@@ -1099,8 +1096,8 @@ Session::process_event (SessionEvent* ev)
 
        case SessionEvent::StopOnce:
                if (!non_realtime_work_pending()) {
-                       stop_transport (ev->yes_or_no);
                        _clear_event_type (SessionEvent::StopOnce);
+                       stop_transport (ev->yes_or_no);
                }
                remove = false;
                del = false;