diff options
author | Carl Hetherington <carl@carlh.net> | 2010-05-02 01:33:25 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-05-02 01:33:25 +0000 |
commit | 0d0e32d8b33e48951feab16d2ef202c14eb9f1f9 (patch) | |
tree | 158af161b2b188e9279d1285a38bd01c715226b1 /gtk2_ardour/panner_ui.cc | |
parent | 13003cd9d9224c558d72403ad2c0eb0b5588cd93 (diff) |
Various fixes to multiple-2D panner signal handling. Should fix some or all of #1632.
git-svn-id: svn://localhost/ardour2/branches/3.0@7037 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/panner_ui.cc')
-rw-r--r-- | gtk2_ardour/panner_ui.cc | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 88bd2b5cca..1a48353e0b 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -155,10 +155,6 @@ PannerUI::set_panner (boost::shared_ptr<Panner> p) _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()); - for (uint32_t i = 0; i < _panner->npanners(); ++i) { - connect_to_pan_control (i); - } - setup_pan (); pan_changed (0); @@ -334,6 +330,11 @@ PannerUI::setup_pan () return; } + _pan_control_connections.drop_connections (); + for (uint32_t i = 0; i < _panner->npanners(); ++i) { + connect_to_pan_control (i); + } + _current_nouts = nouts; _current_npans = npans; @@ -646,7 +647,17 @@ PannerUI::pan_value_changed (uint32_t which) { ENSURE_GUI_THREAD (*this, &PannerUI::pan_value_changed, which) - if (_panner->npanners() > 0 && which < _panner->npanners()) { + if (twod_panner) { + + float x; + float y; + _panner->streampanner(which).get_position (x, y); + + in_pan_update = true; + twod_panner->move_puck (which, x, y); + in_pan_update = false; + + } else if (_panner->npanners() > 0 && which < _panner->npanners()) { float xpos; float val = pan_adjustments[which]->get_value (); @@ -891,5 +902,7 @@ PannerUI::set_mono (bool yn) void PannerUI::connect_to_pan_control (uint32_t i) { - _panner->pan_control(i)->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::pan_value_changed, this, i), gui_context ()); + _panner->pan_control(i)->Changed.connect ( + _pan_control_connections, invalidator (*this), boost::bind (&PannerUI::pan_value_changed, this, i), gui_context () + ); } |