X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fautomation_controller.cc;h=0d16628ab056afdba1fee3b75c777b16fcaa9f99;hb=cf32bf81b81b79250ade5cdae9f79dda6c0eee41;hp=5d601cd829d60f52f470db2efd7db4dbd3747d36;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc index 5d601cd829..0d16628ab0 100644 --- a/gtk2_ardour/automation_controller.cc +++ b/gtk2_ardour/automation_controller.cc @@ -45,16 +45,16 @@ AutomationController::AutomationController(boost::shared_ptr set_style (BarController::LeftToRight); set_use_parent (true); - StartGesture.connect (mem_fun(*this, &AutomationController::start_touch)); - StopGesture.connect (mem_fun(*this, &AutomationController::end_touch)); + StartGesture.connect (sigc::mem_fun(*this, &AutomationController::start_touch)); + StopGesture.connect (sigc::mem_fun(*this, &AutomationController::end_touch)); _adjustment->signal_value_changed().connect ( - mem_fun(*this, &AutomationController::value_adjusted)); + sigc::mem_fun(*this, &AutomationController::value_adjusted)); _screen_update_connection = ARDOUR_UI::RapidScreenUpdate.connect ( - mem_fun (*this, &AutomationController::display_effective_value)); + sigc::mem_fun (*this, &AutomationController::display_effective_value)); - ac->Changed.connect (mem_fun(*this, &AutomationController::value_changed)); + ac->Changed.connect (_changed_connection, boost::bind (&AutomationController::value_changed, this), gui_context()); } AutomationController::~AutomationController() @@ -130,7 +130,7 @@ AutomationController::end_touch() void AutomationController::automation_state_changed () { - ENSURE_GUI_THREAD(mem_fun(*this, &AutomationController::automation_state_changed)); + ENSURE_GUI_THREAD (*this, &AutomationController::automation_state_changed) bool x = (_controllable->automation_state() != Off); @@ -140,14 +140,19 @@ AutomationController::automation_state_changed () if (x) { _screen_update_connection = ARDOUR_UI::RapidScreenUpdate.connect ( - mem_fun (*this, &AutomationController::display_effective_value)); + sigc::mem_fun (*this, &AutomationController::display_effective_value)); } } void AutomationController::value_changed () { - Gtkmm2ext::UI::instance()->call_slot ( - mem_fun(*this, &AutomationController::display_effective_value)); + Gtkmm2ext::UI::instance()->call_slot (boost::bind (&AutomationController::display_effective_value, this)); } +/** Stop updating our value from our controllable */ +void +AutomationController::stop_updating () +{ + _screen_update_connection.disconnect (); +}