X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Ffaderport%2Ffaderport.cc;h=72190c1e8a0370970723688de1d5f832d41ae39c;hb=ba5c14036d8a9ecb0b23400ce556612de2209149;hp=8fd8250c21ab6f19a0e664023802ee41d3345a58;hpb=f28bfb2648a6fd359cd2d441e3d1e94e4f6c2a52;p=ardour.git diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 8fd8250c21..72190c1e8a 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -108,9 +108,6 @@ FaderPort::FaderPort (Session& s) session->engine().make_port_name_non_relative (outp->name()) ); - - StripableSelectionChanged.connect (selection_connection, MISSING_INVALIDATOR, boost::bind (&FaderPort::gui_track_selection_changed, this, _1), this); - /* Catch port connections and disconnections */ ARDOUR::AudioEngine::instance()->PortConnectedOrDisconnected.connect (port_connection, MISSING_INVALIDATOR, boost::bind (&FaderPort::connection_handler, this, _1, _2, _3, _4, _5), this); @@ -203,6 +200,7 @@ FaderPort::~FaderPort () if (_input_port) { DEBUG_TRACE (DEBUG::FaderPort, string_compose ("unregistering input port %1\n", boost::shared_ptr(_input_port)->name())); + Glib::Threads::Mutex::Lock em (AudioEngine::instance()->process_lock()); AudioEngine::instance()->unregister_port (_input_port); _input_port.reset (); } @@ -210,6 +208,7 @@ FaderPort::~FaderPort () if (_output_port) { _output_port->drain (10000, 250000); /* check every 10 msecs, wait up to 1/4 second for the port to drain */ DEBUG_TRACE (DEBUG::FaderPort, string_compose ("unregistering output port %1\n", boost::shared_ptr(_output_port)->name())); + Glib::Threads::Mutex::Lock em (AudioEngine::instance()->process_lock()); AudioEngine::instance()->unregister_port (_output_port); _output_port.reset (); } @@ -287,19 +286,12 @@ FaderPort::stop () void FaderPort::thread_init () { - struct sched_param rtparam; - pthread_set_name (event_loop_name().c_str()); PBD::notify_event_loops_about_thread_creation (pthread_self(), event_loop_name(), 2048); ARDOUR::SessionEvent::create_per_thread_pool (event_loop_name(), 128); - memset (&rtparam, 0, sizeof (rtparam)); - rtparam.sched_priority = 9; /* XXX should be relative to audio (JACK) thread */ - - if (pthread_setschedparam (pthread_self(), SCHED_FIFO, &rtparam) != 0) { - // do we care? not particularly. - } + set_thread_priority (); } void @@ -382,7 +374,7 @@ FaderPort::button_handler (MIDI::Parser &, MIDI::EventTwoBytes* tb) if (tb->value) { gain->start_touch (now); } else { - gain->stop_touch (true, now); + gain->stop_touch (now); } } } @@ -462,9 +454,9 @@ FaderPort::encoder_handler (MIDI::Parser &, MIDI::pitchbend_t pb) if ((button_state & trim_modifier) == trim_modifier ) { // mod+encoder = input trim boost::shared_ptr trim = _current_stripable->trim_control (); if (trim) { - float val = trim->get_user(); //for gain elements, the "user" value is in dB - val += delta; - trim->set_user(val); + float val = accurate_coefficient_to_dB (trim->get_value()); + val += delta * .5f; // use 1/2 dB Steps -20..+20 + trim->set_value (dB_to_coefficient (val), Controllable::UseGroup); } } else if (width_modifier && ((button_state & width_modifier) == width_modifier)) { ardour_pan_width (delta); @@ -1105,7 +1097,7 @@ FaderPort::Button::get_state () const } void -FaderPort::gui_track_selection_changed (StripableNotificationListPtr stripables) +FaderPort::stripable_selection_changed () { set_current_stripable (ControlProtocol::first_selected_stripable()); }