diff options
author | Robin Gareus <robin@gareus.org> | 2014-01-11 23:29:36 +0100 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-01-13 09:37:35 -0500 |
commit | 60fe9606f404cc723c0aa33110f0e15c5324a97d (patch) | |
tree | d30765f9931e6365039606ae5351b2d6efcd967e | |
parent | 1bf9c4c990ccc7f308a38a2eba91fbdb4bb93292 (diff) |
VBAP GUI depends on signal-position (not parameter changes)
-rw-r--r-- | gtk2_ardour/panner2d.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/panner2d.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/panner.h | 3 | ||||
-rw-r--r-- | libs/panners/vbap/vbap.cc | 2 |
4 files changed, 9 insertions, 2 deletions
diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index 395cd2f5dd..b822b5c381 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -77,8 +77,7 @@ Panner2d::Panner2d (boost::shared_ptr<PannerShell> p, int32_t h) { panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context()); - panner_shell->pannable()->pan_azimuth_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); - panner_shell->pannable()->pan_width_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); + panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); drag_target = 0; set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK); @@ -199,6 +198,8 @@ Panner2d::add_speaker (const AngularVector& a) void Panner2d::handle_state_change () { + panconnect.drop_connections(); + panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); queue_draw (); } diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index 881638856f..474d7e1b10 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -136,6 +136,7 @@ class Panner2d : public Gtk::DrawingArea void label_signals (); PBD::ScopedConnectionList connections; + PBD::ScopedConnectionList panconnect; /* cartesian coordinates in GTK units ; adjust to same but on a circle of radius 1.0 and centered in the middle of our area diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index 48f583c185..211ad0ca8e 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -100,6 +100,9 @@ public: virtual void reset () = 0; + /* azimut, width or elevation updated -> recalc signal_position -> emit Changed */ + PBD::Signal0<void> SignalPositionChanged; + void set_automation_state (AutoState); AutoState automation_state() const; void set_automation_style (AutoStyle); diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc index 8cdc91c435..875027b03d 100644 --- a/libs/panners/vbap/vbap.cc +++ b/libs/panners/vbap/vbap.cc @@ -189,6 +189,8 @@ VBAPanner::update () s->direction = AngularVector (center, elevation); compute_gains (s->desired_gains, s->desired_outputs, s->direction.azi, s->direction.ele); } + + SignalPositionChanged(); /* emit */ } void |