diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index e11f1712da..f5ed9d8618 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -974,7 +974,7 @@ MixerStrip::connect_to_pan () pan_control->alist()->automation_style_changed.connect (panstyle_connection, invalidator (*this), boost::bind (&PannerUI::pan_automation_style_changed, &panners), gui_context()); } - panners.pan_changed (this); + panners.panner_changed (this); } diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 263a8ec518..ea9b270bb5 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -150,13 +150,11 @@ PannerUI::set_panner (boost::shared_ptr p) return; } - _panner->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::panner_changed, this), gui_context()); + _panner->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::panner_changed, this, this), gui_context()); _panner->LinkStateChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::update_pan_linkage, this), gui_context()); _panner->StateChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::update_pan_state, this), gui_context()); - setup_pan (); - - pan_changed (0); + panner_changed (0); update_pan_sensitive (); update_pan_linkage (); pan_automation_state_changed (); @@ -301,11 +299,47 @@ PannerUI::~PannerUI () void -PannerUI::panner_changed () +PannerUI::panner_changed (void* src) { ENSURE_GUI_THREAD (*this, &PannerUI::panner_changed) + setup_pan (); - pan_changed (0); + + if (src == this) { + return; + } + + switch (_panner->npanners()) { + case 0: + panning_link_direction_button.set_sensitive (false); + panning_link_button.set_sensitive (false); + return; + case 1: + panning_link_direction_button.set_sensitive (false); + panning_link_button.set_sensitive (false); + break; + default: + panning_link_direction_button.set_sensitive (_panner->linked ()); + panning_link_button.set_sensitive (true); + } + + uint32_t const nouts = _panner->nouts(); + + switch (nouts) { + case 0: + case 1: + /* relax */ + break; + + case 2: + /* bring pan bar state up to date */ + update_pan_bars (false); + break; + + default: + // panner->move_puck (pan_value (pans[0], pans[1]), 0.5); + break; + } } void @@ -590,46 +624,6 @@ PannerUI::effective_pan_display () } } -void -PannerUI::pan_changed (void *src) -{ - if (src == this) { - return; - } - - switch (_panner->npanners()) { - case 0: - panning_link_direction_button.set_sensitive (false); - panning_link_button.set_sensitive (false); - return; - case 1: - panning_link_direction_button.set_sensitive (false); - panning_link_button.set_sensitive (false); - break; - default: - panning_link_direction_button.set_sensitive (_panner->linked ()); - panning_link_button.set_sensitive (true); - } - - uint32_t const nouts = _panner->nouts(); - - switch (nouts) { - case 0: - case 1: - /* relax */ - break; - - case 2: - /* bring pan bar state up to date */ - update_pan_bars (false); - break; - - default: - // panner->move_puck (pan_value (pans[0], pans[1]), 0.5); - break; - } -} - void PannerUI::pan_adjustment_changed (uint32_t which) { diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index a1558981f6..0e16d01a64 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -65,7 +65,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr virtual void set_panner (boost::shared_ptr); - void pan_changed (void *); + void panner_changed (void *); void update_pan_sensitive (); void update_gain_sensitive (); @@ -134,8 +134,6 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr void build_astate_menu (); void build_astyle_menu (); - void panner_changed (); - void hide_pans (); void panner_moved (int which);