summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/contourdesign/contourdesign.cc6
-rw-r--r--libs/surfaces/control_protocol/basic_ui.cc30
-rw-r--r--libs/surfaces/control_protocol/control_protocol/basic_ui.h9
-rw-r--r--libs/surfaces/faderport8/actions.cc2
-rw-r--r--libs/surfaces/osc/osc.cc6
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++) {