summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-01-11 23:29:36 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2014-01-13 09:37:35 -0500
commit60fe9606f404cc723c0aa33110f0e15c5324a97d (patch)
treed30765f9931e6365039606ae5351b2d6efcd967e
parent1bf9c4c990ccc7f308a38a2eba91fbdb4bb93292 (diff)
VBAP GUI depends on signal-position (not parameter changes)
-rw-r--r--gtk2_ardour/panner2d.cc5
-rw-r--r--gtk2_ardour/panner2d.h1
-rw-r--r--libs/ardour/ardour/panner.h3
-rw-r--r--libs/panners/vbap/vbap.cc2
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