diff options
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/contourdesign/contourdesign.cc | 6 | ||||
-rw-r--r-- | libs/surfaces/control_protocol/basic_ui.cc | 30 | ||||
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol/basic_ui.h | 9 | ||||
-rw-r--r-- | libs/surfaces/faderport8/actions.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.cc | 6 |
5 files changed, 30 insertions, 23 deletions
diff --git a/libs/surfaces/contourdesign/contourdesign.cc b/libs/surfaces/contourdesign/contourdesign.cc index 1e4471b56b..0ddf9c5945 100644 --- a/libs/surfaces/contourdesign/contourdesign.cc +++ b/libs/surfaces/contourdesign/contourdesign.cc @@ -557,7 +557,7 @@ ContourDesignControlProtocol::prev_marker_keep_rolling () samplepos_t pos = session->locations()->first_mark_before (session->transport_sample()); if (pos >= 0) { - session->request_locate (pos, _keep_rolling && session->transport_rolling()); + session->request_locate (pos, DoTheRightThing); } else { session->goto_start (); } @@ -569,7 +569,7 @@ ContourDesignControlProtocol::next_marker_keep_rolling () samplepos_t pos = session->locations()->first_mark_after (session->transport_sample()); if (pos >= 0) { - session->request_locate (pos, _keep_rolling && session->transport_rolling()); + session->request_locate (pos, DoTheRightThing); } else { session->goto_end(); } @@ -592,7 +592,7 @@ ContourDesignControlProtocol::jog_event_forward () void ContourDesignControlProtocol::jump_forward (JumpDistance dist) { - bool kr = _keep_rolling && session->transport_rolling (); + LocateTransportDisposition kr = _keep_rolling ? DoTheRightThing : MustStop; switch (dist.unit) { case SECONDS: jump_by_seconds (dist.value, kr); break; case BEATS: jump_by_beats (dist.value, kr); break; diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index 65ea59197a..5c2879cdf0 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -330,7 +330,7 @@ BasicUI::prev_marker () samplepos_t pos = session->locations()->first_mark_before (session->transport_sample()); if (pos >= 0) { - session->request_locate (pos, session->transport_rolling()); + session->request_locate (pos, DoTheRightThing); } else { session->goto_start (); } @@ -342,7 +342,7 @@ BasicUI::next_marker () samplepos_t pos = session->locations()->first_mark_after (session->transport_sample()); if (pos >= 0) { - session->request_locate (pos, session->transport_rolling()); + session->request_locate (pos, DoTheRightThing); } else { session->goto_end(); } @@ -417,13 +417,19 @@ BasicUI::transport_sample () } void -BasicUI::locate (samplepos_t where, bool roll_after_locate) +BasicUI::locate (samplepos_t where, LocateTransportDisposition ltd) { - session->request_locate (where, roll_after_locate); + session->request_locate (where, ltd); } void -BasicUI::jump_by_seconds (double secs, bool with_roll) +BasicUI::locate (samplepos_t where, bool roll) +{ + session->request_locate (where, roll ? MustRoll : DoTheRightThing); +} + +void +BasicUI::jump_by_seconds (double secs, LocateTransportDisposition ltd) { samplepos_t current = session->transport_sample(); double s = (double) current / (double) session->nominal_sample_rate(); @@ -434,11 +440,11 @@ BasicUI::jump_by_seconds (double secs, bool with_roll) } s = s * session->nominal_sample_rate(); - session->request_locate (floor(s), with_roll); + session->request_locate (floor(s), ltd); } void -BasicUI::jump_by_bars (double bars, bool with_roll) +BasicUI::jump_by_bars (double bars, LocateTransportDisposition ltd) { TempoMap& tmap (session->tempo_map()); Timecode::BBT_Time bbt (tmap.bbt_at_sample (session->transport_sample())); @@ -452,18 +458,18 @@ BasicUI::jump_by_bars (double bars, bool with_roll) any.type = AnyTime::BBT; any.bbt.bars = bars; - session->request_locate (session->convert_to_samples (any), with_roll); + session->request_locate (session->convert_to_samples (any), ltd); } void -BasicUI::jump_by_beats (double beats, bool with_roll) +BasicUI::jump_by_beats (double beats, LocateTransportDisposition ltd) { TempoMap& tmap (session->tempo_map ()); double qn_goal = tmap.quarter_note_at_sample (session->transport_sample ()) + beats; if (qn_goal < 0.0) { qn_goal = 0.0; } - session->request_locate (tmap.sample_at_quarter_note (qn_goal), with_roll); + session->request_locate (tmap.sample_at_quarter_note (qn_goal), ltd); } void @@ -574,7 +580,7 @@ BasicUI::toggle_roll (bool roll_out_of_bounded_mode) } else { /* not rolling */ if (session->get_play_loop() && Config->get_loop_is_mode()) { - session->request_locate (session->locations()->auto_loop_location()->start(), true); + session->request_locate (session->locations()->auto_loop_location()->start(), MustRoll); } else { session->request_transport_speed (1.0f); } @@ -689,7 +695,7 @@ BasicUI::goto_nth_marker (int n) for (Locations::LocationList::iterator i = ordered.begin(); n >= 0 && i != ordered.end(); ++i) { if ((*i)->is_mark() && !(*i)->is_hidden() && !(*i)->is_session_range()) { if (n == 0) { - session->request_locate ((*i)->start(), session->transport_rolling()); + session->request_locate ((*i)->start(), DoTheRightThing); break; } --n; diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h index af1e127b03..70f40f97b8 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -70,12 +70,13 @@ class LIBCONTROLCP_API BasicUI { void set_transport_speed (double speed); double get_transport_speed (); - void jump_by_seconds (double sec, bool with_roll = false); - void jump_by_bars (double bars, bool with_roll = false); - void jump_by_beats (double beats, bool with_roll = false); + void jump_by_seconds (double sec, ARDOUR::LocateTransportDisposition ltd = ARDOUR::DoTheRightThing); + void jump_by_bars (double bars, ARDOUR::LocateTransportDisposition ltd = ARDOUR::DoTheRightThing); + void jump_by_beats (double beats, ARDOUR::LocateTransportDisposition ltd = ARDOUR::DoTheRightThing); ARDOUR::samplepos_t transport_sample (); - void locate (ARDOUR::samplepos_t sample, bool play = false); + void locate (ARDOUR::samplepos_t sample, ARDOUR::LocateTransportDisposition ltd); + void locate (ARDOUR::samplepos_t sample, bool); bool locating (); bool locked (); diff --git a/libs/surfaces/faderport8/actions.cc b/libs/surfaces/faderport8/actions.cc index 27fdce1a66..29beadd5fc 100644 --- a/libs/surfaces/faderport8/actions.cc +++ b/libs/surfaces/faderport8/actions.cc @@ -309,7 +309,7 @@ FaderPort8::button_varispeed (bool ffw) // stop key-repeat dynamic_cast<FP8RepeatButton*>(&b_ffw)->stop_repeat(); dynamic_cast<FP8RepeatButton*>(&b_rew)->stop_repeat(); - session->request_locate (0, false); + session->request_locate (0, MustStop); return; } diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 666c1023c3..5e336e653d 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -3369,7 +3369,7 @@ OSC::set_marker (const char* types, lo_arg **argv, int argc, lo_message msg) for (Locations::LocationList::const_iterator l = ll.begin(); l != ll.end(); ++l) { if ((*l)->is_mark ()) { if (strcmp (&argv[0]->s, (*l)->name().c_str()) == 0) { - session->request_locate ((*l)->start (), false); + session->request_locate ((*l)->start (), MustStop); return 0; } else if ((*l)->start () == session->transport_sample()) { cur_mark = (*l); @@ -3406,7 +3406,7 @@ OSC::set_marker (const char* types, lo_arg **argv, int argc, lo_message msg) std::sort (lm.begin(), lm.end(), location_marker_sort); // go there if (marker < lm.size()) { - session->request_locate (lm[marker].when, false); + session->request_locate (lm[marker].when, MustStop); return 0; } // we were unable to deal with things @@ -6202,7 +6202,7 @@ OSC::periodic (void) scrub_speed = 0; session->request_transport_speed (0); // locate to the place PH was at last tick - session->request_locate (scrub_place, false); + session->request_locate (scrub_place, MustStop); } } for (uint32_t it = 0; it < _surface.size(); it++) { |