From 086e48796cdf3b7cfd867978f8aafecf06564642 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 21 Sep 2020 14:28:23 -0600 Subject: [PATCH] surfaces: first round of conversion to use timeline types --- libs/surfaces/cc121/cc121.cc | 20 +++++++++---------- libs/surfaces/cc121/operations.cc | 2 +- libs/surfaces/contourdesign/contourdesign.cc | 13 ++++++------ libs/surfaces/control_protocol/basic_ui.cc | 18 ++++++++--------- .../control_protocol/basic_ui.h | 4 +++- libs/surfaces/faderport/faderport.cc | 2 +- libs/surfaces/faderport8/actions.cc | 14 ++++++------- libs/surfaces/faderport8/faderport8.cc | 2 +- libs/surfaces/faderport8/fp8_strip.cc | 13 ++++++------ .../generic_midi_control_protocol.cc | 2 +- libs/surfaces/mackie/controls.cc | 8 ++++---- libs/surfaces/mackie/controls.h | 6 ++++-- libs/surfaces/mackie/mcp_buttons.cc | 9 ++++----- libs/surfaces/mackie/strip.cc | 10 ++++++---- libs/surfaces/osc/osc.cc | 9 +++++---- libs/surfaces/osc/osc_global_observer.cc | 6 +++--- libs/surfaces/push2/mix.cc | 5 +++-- libs/surfaces/push2/push2.cc | 5 +++-- libs/surfaces/push2/track_mix.cc | 5 +++-- libs/surfaces/us2400/controls.cc | 4 ++-- libs/surfaces/us2400/controls.h | 8 ++++++-- libs/surfaces/us2400/mcp_buttons.cc | 6 +++--- libs/surfaces/us2400/strip.cc | 10 ++++++---- 23 files changed, 98 insertions(+), 83 deletions(-) diff --git a/libs/surfaces/cc121/cc121.cc b/libs/surfaces/cc121/cc121.cc index 8c4884f267..76c7abe647 100644 --- a/libs/surfaces/cc121/cc121.cc +++ b/libs/surfaces/cc121/cc121.cc @@ -309,7 +309,7 @@ CC121::button_press_handler (MIDI::Parser &, MIDI::EventTwoBytes* tb) if (_current_stripable) { boost::shared_ptr gain = _current_stripable->gain_control (); if (gain) { - samplepos_t now = session->engine().sample_time(); + timepos_t now (session->engine().sample_time()); gain->start_touch (now); } } @@ -352,15 +352,15 @@ CC121::button_release_handler (MIDI::Parser &, MIDI::EventTwoBytes* tb) switch (id) { case FaderTouch: - fader_is_touched = false; - if (_current_stripable) { - boost::shared_ptr gain = _current_stripable->gain_control (); - if (gain) { - samplepos_t now = session->engine().sample_time(); - gain->stop_touch (now); - } - } - break; + fader_is_touched = false; + if (_current_stripable) { + boost::shared_ptr gain = _current_stripable->gain_control (); + if (gain) { + timepos_t now (session->engine().sample_time()); + gain->stop_touch (now); + } + } + break; default: break; } diff --git a/libs/surfaces/cc121/operations.cc b/libs/surfaces/cc121/operations.cc index d06edaf480..e77062e5d0 100644 --- a/libs/surfaces/cc121/operations.cc +++ b/libs/surfaces/cc121/operations.cc @@ -240,7 +240,7 @@ CC121::set_controllable (boost::shared_ptr ac, float delta) if (!ac || delta == 0) { return; } - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); ac->set_interface ((ac->internal_to_interface (ac->get_value(), true) + delta), true); } diff --git a/libs/surfaces/contourdesign/contourdesign.cc b/libs/surfaces/contourdesign/contourdesign.cc index a072c3573b..5a8663a373 100644 --- a/libs/surfaces/contourdesign/contourdesign.cc +++ b/libs/surfaces/contourdesign/contourdesign.cc @@ -559,11 +559,10 @@ ContourDesignControlProtocol::handle_button_release (unsigned short btn) void ContourDesignControlProtocol::prev_marker_keep_rolling () { - samplepos_t pos = session->locations()->first_mark_before (session->transport_sample()); + timepos_t pos = session->locations()->first_mark_before (timepos_t (session->transport_sample())); - if (pos >= 0) { - - session->request_locate (pos); + if (pos.positive() || pos.zero()) { + session->request_locate (pos.samples()); } else { session->goto_start (); } @@ -572,10 +571,10 @@ ContourDesignControlProtocol::prev_marker_keep_rolling () void ContourDesignControlProtocol::next_marker_keep_rolling () { - samplepos_t pos = session->locations()->first_mark_after (session->transport_sample()); + timepos_t pos = session->locations()->first_mark_after (timepos_t (session->transport_sample())); - if (pos >= 0) { - session->request_locate (pos); + if (pos.positive() || pos.zero()) { + session->request_locate (pos.samples()); } else { session->goto_end(); } diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index e033d7fbb0..9af0fc71e5 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -113,7 +113,7 @@ BasicUI::loop_toggle () } void -BasicUI::loop_location (samplepos_t start, samplepos_t end) +BasicUI::loop_location (timepos_t const & start, timepos_t const & end) { Location* tll; if ((tll = session->locations()->auto_loop_location()) == 0) { @@ -147,7 +147,7 @@ BasicUI::goto_end () void BasicUI::add_marker (const std::string& markername) { - samplepos_t where = session->audible_sample(); + timepos_t where (session->audible_sample()); Location *location = new Location (*session, where, where, markername, Location::IsMark); session->begin_reversible_command (_("add marker")); XMLNode &before = session->locations()->get_state(); @@ -167,7 +167,7 @@ BasicUI::remove_marker_at_playhead () //find location(s) at this time Locations::LocationList locs; - session->locations()->find_all_between (session->audible_sample(), session->audible_sample()+1, locs, Location::Flags(0)); + session->locations()->find_all_between (timepos_t (session->audible_sample()), timepos_t (session->audible_sample()+1), locs, Location::Flags(0)); for (Locations::LocationList::iterator i = locs.begin(); i != locs.end(); ++i) { if ((*i)->is_mark()) { session->locations()->remove (*i); @@ -420,10 +420,10 @@ BasicUI::save_state () void BasicUI::prev_marker () { - samplepos_t pos = session->locations()->first_mark_before (session->transport_sample()); + timepos_t pos = session->locations()->first_mark_before (timepos_t (session->transport_sample())); if (pos >= 0) { - session->request_locate (pos); + session->request_locate (pos.samples()); } else { session->goto_start (); } @@ -432,10 +432,10 @@ BasicUI::prev_marker () void BasicUI::next_marker () { - samplepos_t pos = session->locations()->first_mark_after (session->transport_sample()); + timepos_t pos = session->locations()->first_mark_after (timepos_t (session->transport_sample())); if (pos >= 0) { - session->request_locate (pos); + session->request_locate (pos.samples()); } else { session->goto_end(); } @@ -679,7 +679,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(), MustRoll); + session->request_locate (session->locations()->auto_loop_location()->start().samples(), MustRoll); } else { session->request_roll (TRS_UI); } @@ -794,7 +794,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->request_locate ((*i)->start().samples()); 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 e7ec8e1cc1..26d482b1f7 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -28,6 +28,8 @@ #include "pbd/signals.h" +#include "temporal/timeline.h" + #include "ardour/types.h" #include "ardour/presentation_info.h" @@ -57,7 +59,7 @@ class LIBCONTROLCP_API BasicUI { /* transport control */ void loop_toggle (); - void loop_location (samplepos_t start, samplepos_t end); + void loop_location (Temporal::timepos_t const & start, Temporal::timepos_t const & end); void access_action ( std::string action_path ); static PBD::Signal2 AccessAction; void goto_zero (); diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 78e31cb348..f454f39c4b 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -367,7 +367,7 @@ FaderPort::button_handler (MIDI::Parser &, MIDI::EventTwoBytes* tb) if (_current_stripable) { boost::shared_ptr gain = _current_stripable->gain_control (); if (gain) { - samplepos_t now = session->engine().sample_time(); + timepos_t now = timepos_t (session->engine().sample_time()); if (tb->value) { gain->start_touch (now); } else { diff --git a/libs/surfaces/faderport8/actions.cc b/libs/surfaces/faderport8/actions.cc index 2b05c74cd3..0c7641b5a4 100644 --- a/libs/surfaces/faderport8/actions.cc +++ b/libs/surfaces/faderport8/actions.cc @@ -345,7 +345,7 @@ FaderPort8::button_solo_clear () if (!ac) { continue; } - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); cl->push_back (ac); } if (!cl->empty()) { @@ -370,7 +370,7 @@ FaderPort8::button_mute_clear () continue; } cl->push_back (ac); - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); } if (!cl->empty()) { session->set_controls (cl, 1.0, PBD::Controllable::NoGroup); @@ -410,7 +410,7 @@ FaderPort8::handle_encoder_pan (int steps) ac = s->pan_azimuth_control (); } if (ac) { - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); if (steps == 0) { ac->set_value (ac->normal(), PBD::Controllable::UseGroup); } else { @@ -434,7 +434,7 @@ FaderPort8::handle_encoder_link (int steps) } double v = ac->internal_to_interface (ac->get_value(), true); - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); if (steps == 0) { ac->set_value (ac->normal(), PBD::Controllable::UseGroup); @@ -554,7 +554,7 @@ FaderPort8::button_encoder () ac = session->master_out()->gain_control (); } if (ac) { - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); ac->set_value (ac->normal(), PBD::Controllable::NoGroup); } } @@ -571,7 +571,7 @@ FaderPort8::button_encoder () * the current position and we're not rolling. */ samplepos_t where = session->audible_sample(); - if (session->transport_stopped_or_stopping() && session->locations()->mark_at (where, session->sample_rate() / 100.0)) { + if (session->transport_stopped_or_stopping() && session->locations()->mark_at (timepos_t (where), timecnt_t (session->sample_rate() / 100.0))) { return; } @@ -636,7 +636,7 @@ FaderPort8::encoder_navigate (bool neg, int steps) if (ac) { double v = ac->internal_to_interface (ac->get_value()); v = std::max (0.0, std::min (1.0, v + steps * (neg ? -.01 : .01))); - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); ac->set_value (ac->interface_to_internal(v), PBD::Controllable::NoGroup); } } diff --git a/libs/surfaces/faderport8/faderport8.cc b/libs/surfaces/faderport8/faderport8.cc index ed03934e18..1b48795ae9 100644 --- a/libs/surfaces/faderport8/faderport8.cc +++ b/libs/surfaces/faderport8/faderport8.cc @@ -1718,7 +1718,7 @@ FaderPort8::select_strip (boost::weak_ptr ws) if (s == first_selected_stripable () && !shift_mod ()) { if (_ctrls.fader_mode () == ModeTrack) { boost::shared_ptr ac = s->gain_control (); - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); ac->set_value (ac->normal (), PBD::Controllable::UseGroup); } return; diff --git a/libs/surfaces/faderport8/fp8_strip.cc b/libs/surfaces/faderport8/fp8_strip.cc index bd3d137996..ae3f95cd9d 100644 --- a/libs/surfaces/faderport8/fp8_strip.cc +++ b/libs/surfaces/faderport8/fp8_strip.cc @@ -356,10 +356,11 @@ FP8Strip::midi_touch (bool t) if (!ac) { return false; } + timepos_t now (ac->session().transport_sample()); if (t) { - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (now); } else { - ac->stop_touch (ac->session().transport_sample()); + ac->stop_touch (now); } return true; } @@ -375,7 +376,7 @@ FP8Strip::midi_fader (float val) if (!ac) { return false; } - ac->start_touch (ac->session().transport_sample()); + ac->start_touch (timepos_t (ac->session().transport_sample())); ac->set_value (ac->interface_to_internal (val), group_mode ()); return true; } @@ -400,7 +401,7 @@ FP8Strip::set_mute (bool on) if (!_mute_ctrl) { return; } - _mute_ctrl->start_touch (_mute_ctrl->session().transport_sample()); + _mute_ctrl->start_touch (timepos_t (_mute_ctrl->session().transport_sample())); _mute_ctrl->set_value (on ? 1.0 : 0.0, group_mode ()); } @@ -410,7 +411,7 @@ FP8Strip::set_solo (bool on) if (!_solo_ctrl) { return; } - _solo_ctrl->start_touch (_solo_ctrl->session().transport_sample()); + _solo_ctrl->start_touch (timepos_t (_solo_ctrl->session().transport_sample())); PBD::Controllable::GroupControlDisposition gcd = group_mode (); Session& s = const_cast (_solo_ctrl->session()); s.set_control (_solo_ctrl, on ? 1.0 : 0.0, gcd); @@ -433,7 +434,7 @@ FP8Strip::set_select () assert (!_x_select_ctrl); _select_plugin_functor (); } else if (_x_select_ctrl) { - _x_select_ctrl->start_touch (_x_select_ctrl->session().transport_sample()); + _x_select_ctrl->start_touch (timepos_t (_x_select_ctrl->session().transport_sample())); const bool on = !select_button ().is_active(); _x_select_ctrl->set_value (on ? 1.0 : 0.0, group_mode ()); } diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index 549718647c..0626359dbb 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -1611,7 +1611,7 @@ GenericMidiControlProtocol::maybe_start_touch (boost::shared_ptr c { boost::shared_ptr actl = boost::dynamic_pointer_cast (controllable); if (actl) { - actl->start_touch (session->audible_sample ()); + actl->start_touch (timepos_t (session->audible_sample ())); } } diff --git a/libs/surfaces/mackie/controls.cc b/libs/surfaces/mackie/controls.cc index f1c5346eb7..554b0f8cd3 100644 --- a/libs/surfaces/mackie/controls.cc +++ b/libs/surfaces/mackie/controls.cc @@ -97,18 +97,18 @@ Control::get_value () } void -Control::start_touch (double when) +Control::start_touch (Temporal::timepos_t const & when) { if (normal_ac) { - return normal_ac->start_touch (when); + normal_ac->start_touch (when); } } void -Control::stop_touch (double when) +Control::stop_touch (Temporal::timepos_t const & when) { if (normal_ac) { - return normal_ac->stop_touch (when); + normal_ac->stop_touch (when); } } diff --git a/libs/surfaces/mackie/controls.h b/libs/surfaces/mackie/controls.h index d1a2b2931b..384bf53ef6 100644 --- a/libs/surfaces/mackie/controls.h +++ b/libs/surfaces/mackie/controls.h @@ -32,6 +32,8 @@ #include "pbd/controllable.h" #include "pbd/signals.h" +#include "temporal/timeline.h" + #include "mackie_control_exception.h" #include "midi_byte_array.h" @@ -75,8 +77,8 @@ public: float get_value (); void set_value (float val, PBD::Controllable::GroupControlDisposition gcd = PBD::Controllable::UseGroup); - virtual void start_touch (double when); - virtual void stop_touch (double when); + virtual void start_touch (Temporal::timepos_t const & when); + virtual void stop_touch (Temporal::timepos_t const & when); protected: boost::shared_ptr normal_ac; diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index 7df4ae49cf..c2097d0423 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -485,7 +485,7 @@ MackieControlProtocol::marker_release (Button &) samplepos_t where = session->audible_sample(); - if (session->transport_stopped_or_stopping() && session->locations()->mark_at (where, session->sample_rate() / 100.0)) { + if (session->transport_stopped_or_stopping() && session->locations()->mark_at (timepos_t (where), timecnt_t (session->sample_rate() / 100.0))) { return off; } @@ -865,10 +865,8 @@ MackieControlProtocol::master_fader_touch_press (Mackie::Button &) Fader* master_fader = _master_surface->master_fader(); - boost::shared_ptr ac = master_fader->control (); - master_fader->set_in_use (true); - master_fader->start_touch (transport_sample()); + master_fader->start_touch (timepos_t (transport_sample())); } return none; } @@ -881,7 +879,8 @@ MackieControlProtocol::master_fader_touch_release (Mackie::Button &) Fader* master_fader = _master_surface->master_fader(); master_fader->set_in_use (false); - master_fader->stop_touch (transport_sample()); + master_fader->stop_touch (timepos_t (transport_sample())); + } return none; } diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc index 7f46431cdc..cd0819b933 100644 --- a/libs/surfaces/mackie/strip.cc +++ b/libs/surfaces/mackie/strip.cc @@ -597,7 +597,7 @@ Strip::fader_touch_event (Button&, ButtonState bs) boost::shared_ptr ac = _fader->control (); _fader->set_in_use (true); - _fader->start_touch (_surface->mcp().transport_sample()); + _fader->start_touch (timepos_t (_surface->mcp().transport_sample())); if (ac) { do_parameter_display (ac->desc(), ac->get_value()); @@ -606,7 +606,7 @@ Strip::fader_touch_event (Button&, ButtonState bs) } else { _fader->set_in_use (false); - _fader->stop_touch (_surface->mcp().transport_sample()); + _fader->stop_touch (timepos_t (_surface->mcp().transport_sample())); } } @@ -749,10 +749,12 @@ Strip::do_parameter_display (ARDOUR::ParameterDescriptor const& desc, float val, void Strip::handle_fader_touch (Fader& fader, bool touch_on) { + timepos_t now (_surface->mcp().transport_sample()); + if (touch_on) { - fader.start_touch (_surface->mcp().transport_sample()); + fader.start_touch (now); } else { - fader.stop_touch (_surface->mcp().transport_sample()); + fader.stop_touch (now); } } diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index d942e4a0d7..bd5befb5b9 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -42,6 +42,8 @@ #include #include +#include "temporal/timeline.h" + #include "ardour/amp.h" #include "ardour/session.h" #include "ardour/route.h" @@ -3141,7 +3143,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 (), MustStop); + session->request_locate ((*l)->start_sample (), MustStop); return 0; } else if ((*l)->start () == session->transport_sample()) { cur_mark = (*l); @@ -3170,7 +3172,7 @@ OSC::set_marker (const char* types, lo_arg **argv, int argc, lo_message msg) // get Locations that are marks for (Locations::LocationList::const_iterator l = ll.begin(); l != ll.end(); ++l) { if ((*l)->is_mark ()) { - lm.push_back (LocationMarker((*l)->name(), (*l)->start ())); + lm.push_back (LocationMarker((*l)->name(), (*l)->start_sample ())); } } // sort them by position @@ -3497,7 +3499,6 @@ OSC::select_parse (const char *path, const char* types, lo_arg **argv, int argc, } return ret; - } @@ -5927,7 +5928,7 @@ OSC::periodic (void) if (!(*x).second) { boost::shared_ptr ctrl = (*x).first; // turn touch off - ctrl->stop_touch (ctrl->session().transport_sample()); + ctrl->stop_touch (timepos_t (ctrl->session().transport_sample())); _touch_timeout.erase (x++); } else { x++; diff --git a/libs/surfaces/osc/osc_global_observer.cc b/libs/surfaces/osc/osc_global_observer.cc index 2dce39380c..b7ade2632e 100644 --- a/libs/surfaces/osc/osc_global_observer.cc +++ b/libs/surfaces/osc/osc_global_observer.cc @@ -431,12 +431,12 @@ OSCGlobalObserver::marks_changed () // get Locations that are marks for (Locations::LocationList::const_iterator l = ll.begin(); l != ll.end(); ++l) { if ((*l)->is_session_range ()) { - lm.push_back (LocationMarker(_("start"), (*l)->start ())); - lm.push_back (LocationMarker(_("end"), (*l)->end ())); + lm.push_back (LocationMarker(_("start"), (*l)->start_sample ())); + lm.push_back (LocationMarker(_("end"), (*l)->end_sample ())); continue; } if ((*l)->is_mark ()) { - lm.push_back (LocationMarker((*l)->name(), (*l)->start ())); + lm.push_back (LocationMarker((*l)->name(), (*l)->start_sample ())); } } // sort them by position diff --git a/libs/surfaces/push2/mix.cc b/libs/surfaces/push2/mix.cc index 01feb6b8af..1684c045cd 100644 --- a/libs/surfaces/push2/mix.cc +++ b/libs/surfaces/push2/mix.cc @@ -437,10 +437,11 @@ MixLayout::strip_vpot_touch (int n, bool touching) if (stripable[n]) { boost::shared_ptr ac = stripable[n]->gain_control(); if (ac) { + const timepos_t now (session.audible_sample()); if (touching) { - ac->start_touch (session.audible_sample()); + ac->start_touch (now); } else { - ac->stop_touch (session.audible_sample()); + ac->stop_touch (now); } } } diff --git a/libs/surfaces/push2/push2.cc b/libs/surfaces/push2/push2.cc index 821d84066c..dc55e261d1 100644 --- a/libs/surfaces/push2/push2.cc +++ b/libs/surfaces/push2/push2.cc @@ -1078,10 +1078,11 @@ Push2::other_vpot_touch (int n, bool touching) if (master) { boost::shared_ptr ac = master->gain_control(); if (ac) { + const timepos_t now (session->audible_sample()); if (touching) { - ac->start_touch (session->audible_sample()); + ac->start_touch (now); } else { - ac->stop_touch (session->audible_sample()); + ac->stop_touch (now); } } } diff --git a/libs/surfaces/push2/track_mix.cc b/libs/surfaces/push2/track_mix.cc index ec03775949..34f95c0a4d 100644 --- a/libs/surfaces/push2/track_mix.cc +++ b/libs/surfaces/push2/track_mix.cc @@ -572,10 +572,11 @@ TrackMixLayout::strip_vpot_touch (int n, bool touching) { boost::shared_ptr ac = knobs[n]->controllable(); if (ac) { + const timepos_t now (session.audible_sample()); if (touching) { - ac->start_touch (session.audible_sample()); + ac->start_touch (now); } else { - ac->stop_touch (session.audible_sample()); + ac->stop_touch (now); } } } diff --git a/libs/surfaces/us2400/controls.cc b/libs/surfaces/us2400/controls.cc index bdac049f5a..aa1e33d583 100644 --- a/libs/surfaces/us2400/controls.cc +++ b/libs/surfaces/us2400/controls.cc @@ -97,7 +97,7 @@ Control::get_value () } void -Control::start_touch (double when) +Control::start_touch (Temporal::timepos_t const & when) { if (normal_ac) { return normal_ac->start_touch (when); @@ -105,7 +105,7 @@ Control::start_touch (double when) } void -Control::stop_touch (double when) +Control::stop_touch (Temporal::timepos_t const & when) { if (normal_ac) { return normal_ac->stop_touch (when); diff --git a/libs/surfaces/us2400/controls.h b/libs/surfaces/us2400/controls.h index 16f70e6c34..07e6a6805f 100644 --- a/libs/surfaces/us2400/controls.h +++ b/libs/surfaces/us2400/controls.h @@ -36,6 +36,10 @@ namespace ARDOUR { class AutomationControl; } +namespace Temporal { + class timepos_t; +} + namespace ArdourSurface { namespace US2400 { @@ -75,8 +79,8 @@ public: float get_value (); void set_value (float val, PBD::Controllable::GroupControlDisposition gcd = PBD::Controllable::UseGroup); - virtual void start_touch (double when); - virtual void stop_touch (double when); + virtual void start_touch (Temporal::timepos_t const & when); + virtual void stop_touch (Temporal::timepos_t const & when); protected: boost::shared_ptr normal_ac; diff --git a/libs/surfaces/us2400/mcp_buttons.cc b/libs/surfaces/us2400/mcp_buttons.cc index 66802b1d24..49bb085834 100644 --- a/libs/surfaces/us2400/mcp_buttons.cc +++ b/libs/surfaces/us2400/mcp_buttons.cc @@ -458,7 +458,7 @@ US2400Protocol::marker_release (Button &) samplepos_t where = session->audible_sample(); - if (session->transport_stopped_or_stopping() && session->locations()->mark_at (where, session->sample_rate() / 100.0)) { + if (session->transport_stopped_or_stopping() && session->locations()->mark_at (timepos_t (where), timecnt_t (session->sample_rate() / 100.0))) { return off; } @@ -851,7 +851,7 @@ US2400Protocol::master_fader_touch_press (US2400::Button &) boost::shared_ptr ac = master_fader->control (); master_fader->set_in_use (true); - master_fader->start_touch (transport_sample()); + master_fader->start_touch (timepos_t (transport_sample())); return none; } @@ -863,7 +863,7 @@ US2400Protocol::master_fader_touch_release (US2400::Button &) Fader* master_fader = _master_surface->master_fader(); master_fader->set_in_use (false); - master_fader->stop_touch (transport_sample()); + master_fader->stop_touch (timepos_t (transport_sample())); return none; } diff --git a/libs/surfaces/us2400/strip.cc b/libs/surfaces/us2400/strip.cc index 95a92140cc..4b181ccfc1 100644 --- a/libs/surfaces/us2400/strip.cc +++ b/libs/surfaces/us2400/strip.cc @@ -32,6 +32,8 @@ #include "pbd/compose.h" #include "pbd/convert.h" +#include "temporal/timeline.h" + #include "ardour/amp.h" #include "ardour/bundle.h" #include "ardour/debug.h" @@ -427,12 +429,12 @@ Strip::fader_touch_event (Button&, ButtonState bs) boost::shared_ptr ac = _fader->control (); _fader->set_in_use (true); - _fader->start_touch (_surface->mcp().transport_sample()); + _fader->start_touch (timepos_t (_surface->mcp().transport_sample())); } else { _fader->set_in_use (false); - _fader->stop_touch (_surface->mcp().transport_sample()); + _fader->stop_touch (timepos_t (_surface->mcp().transport_sample())); } } @@ -508,9 +510,9 @@ void Strip::handle_fader_touch (Fader& fader, bool touch_on) { if (touch_on) { - fader.start_touch (_surface->mcp().transport_sample()); + fader.start_touch (timepos_t (_surface->mcp().transport_sample())); } else { - fader.stop_touch (_surface->mcp().transport_sample()); + fader.stop_touch (timepos_t (_surface->mcp().transport_sample())); } }