summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-01-14 21:13:21 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-01-14 21:13:21 -0500
commit37b1f5017e904005fae6b815b1519b3fa595d8d3 (patch)
tree35f4da37569cfadc1554f5f212efa54e8ec89d91 /libs
parentadc2edc05cf2357d911c4767f6bb63bcf53145d8 (diff)
parent35c170937de6150ae09154f96e4920d30e83f6ce (diff)
merge with master
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/delivery.cc11
-rw-r--r--libs/ardour/panner_shell.cc37
-rw-r--r--libs/ardour/send.cc2
-rw-r--r--libs/panners/vbap/vbap.cc3
-rw-r--r--libs/surfaces/mackie/strip.cc12
-rw-r--r--libs/vamp-plugins/Onset.cpp4
6 files changed, 48 insertions, 21 deletions
diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc
index b4b9831d97..045417b0cc 100644
--- a/libs/ardour/delivery.cc
+++ b/libs/ardour/delivery.cc
@@ -368,7 +368,6 @@ Delivery::set_state (const XMLNode& node, int version)
XMLNode* pannnode = node.child (X_("Pannable"));
if (_panshell && _panshell->panner() && pannnode) {
_panshell->pannable()->set_state (*pannnode, version);
- _panshell->pannable()->set_panner(_panshell->panner());
}
return 0;
@@ -399,11 +398,8 @@ Delivery::reset_panner ()
if (!_no_panner_reset) {
if (_panshell) {
+ assert (_role == Main || _role == Aux || _role == Send);
_panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, pan_outs()));
-
- if (_role == Main || _role == Aux || _role == Send) {
- _panshell->pannable()->set_panner (_panshell->panner());
- }
}
}
@@ -417,11 +413,8 @@ void
Delivery::panners_became_legal ()
{
if (_panshell) {
+ assert (_role == Main || _role == Aux || _role == Send);
_panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, pan_outs()));
-
- if (_role == Main) {
- _panshell->pannable()->set_panner (_panshell->panner());
- }
}
panner_legal_c.disconnect ();
diff --git a/libs/ardour/panner_shell.cc b/libs/ardour/panner_shell.cc
index b489354e21..0297cba6ef 100644
--- a/libs/ardour/panner_shell.cc
+++ b/libs/ardour/panner_shell.cc
@@ -101,6 +101,7 @@ PannerShell::configure_io (ChanCount in, ChanCount out)
if (!_force_reselect && _panner && (_panner->in().n_audio() == nins) && (_panner->out().n_audio() == nouts)) {
return;
}
+ _force_reselect = false;
if (nouts < 2 || nins == 0) {
/* no need for panning with less than 2 outputs or no inputs */
@@ -108,6 +109,9 @@ PannerShell::configure_io (ChanCount in, ChanCount out)
_panner.reset ();
_current_panner_uri = "";
_panner_gui_uri = "";
+ if (!_is_send || !_panlinked) {
+ pannable()->set_panner(_panner);
+ }
Changed (); /* EMIT SIGNAL */
}
return;
@@ -140,6 +144,9 @@ PannerShell::configure_io (ChanCount in, ChanCount out)
_current_panner_uri = pi->descriptor.panner_uri;
_panner_gui_uri = pi->descriptor.gui_uri;
+ if (!_is_send || !_panlinked) {
+ pannable()->set_panner(_panner);
+ }
Changed (); /* EMIT SIGNAL */
}
@@ -192,6 +199,15 @@ PannerShell::set_state (const XMLNode& node, int version)
_is_send ? _pannable_internal : _pannable_route, _session.get_speakers ()));
_current_panner_uri = p->descriptor.panner_uri;
_panner_gui_uri = p->descriptor.gui_uri;
+ if (_is_send) {
+ if (!_panlinked) {
+ _pannable_internal->set_panner(_panner);
+ } else {
+ _force_reselect = true;
+ }
+ } else {
+ _pannable_route->set_panner(_panner);
+ }
if (_panner->set_state (**niter, version) == 0) {
return -1;
}
@@ -426,7 +442,9 @@ PannerShell::select_panner_by_uri (std::string const uri)
ChanCount in = _panner->in();
ChanCount out = _panner->out();
configure_io(in, out);
- pannable()->set_panner(_panner);
+ if (!_is_send || !_panlinked) {
+ pannable()->set_panner(_panner);
+ }
_session.set_dirty ();
}
return true;
@@ -435,9 +453,20 @@ PannerShell::select_panner_by_uri (std::string const uri)
void
PannerShell::set_linked_to_route (bool onoff)
{
- if (!_is_send || onoff == _panlinked) {
+ assert(_is_send);
+ if (onoff == _panlinked) {
return;
}
+
+ /* set _pannable-_has_state = true
+ * this way the panners will pick it up
+ * when it is re-created
+ */
+ if (pannable()) {
+ XMLNode state = pannable()->get_state();
+ pannable()->set_state(state, 3000);
+ }
+
_panlinked = onoff;
_force_reselect = true;
@@ -446,7 +475,9 @@ PannerShell::set_linked_to_route (bool onoff)
ChanCount in = _panner->in();
ChanCount out = _panner->out();
configure_io(in, out);
- pannable()->set_panner(_panner);
+ if (!_panlinked) {
+ pannable()->set_panner(_panner);
+ }
_session.set_dirty ();
}
PannableChanged();
diff --git a/libs/ardour/send.cc b/libs/ardour/send.cc
index 2c3d8f23ae..1664f42b35 100644
--- a/libs/ardour/send.cc
+++ b/libs/ardour/send.cc
@@ -81,7 +81,7 @@ Send::Send (Session& s, boost::shared_ptr<Pannable> p, boost::shared_ptr<MuteMas
_bitslot = 0;
}
- boost_debug_shared_ptr_mark_interesting (this, "send");
+ //boost_debug_shared_ptr_mark_interesting (this, "send");
_amp.reset (new Amp (_session));
_meter.reset (new PeakMeter (_session, name()));
diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc
index 0de8d3a29a..954711db49 100644
--- a/libs/panners/vbap/vbap.cc
+++ b/libs/panners/vbap/vbap.cc
@@ -81,6 +81,9 @@ VBAPanner::VBAPanner (boost::shared_ptr<Pannable> p, boost::shared_ptr<Speakers>
_pannable->pan_azimuth_control->Changed.connect_same_thread (*this, boost::bind (&VBAPanner::update, this));
_pannable->pan_elevation_control->Changed.connect_same_thread (*this, boost::bind (&VBAPanner::update, this));
_pannable->pan_width_control->Changed.connect_same_thread (*this, boost::bind (&VBAPanner::update, this));
+ if (!_pannable->has_state()) {
+ reset();
+ }
update ();
}
diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc
index c736b3f7e6..ef4447d900 100644
--- a/libs/surfaces/mackie/strip.cc
+++ b/libs/surfaces/mackie/strip.cc
@@ -177,7 +177,7 @@ Strip::set_route (boost::shared_ptr<Route> r, bool /*with_messages*/)
boost::shared_ptr<Pannable> pannable = _route->pannable();
- if (pannable && pannable->panner()) {
+ if (pannable && _route->panner()) {
pannable->pan_azimuth_control->Changed.connect(route_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_panner_azi_changed, this, false), ui_context());
pannable->pan_width_control->Changed.connect(route_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_panner_width_changed, this, false), ui_context());
}
@@ -211,7 +211,7 @@ Strip::set_route (boost::shared_ptr<Route> r, bool /*with_messages*/)
possible_pot_parameters.clear();
if (pannable) {
- boost::shared_ptr<Panner> panner = pannable->panner();
+ boost::shared_ptr<Panner> panner = _route->panner();
if (panner) {
set<Evoral::Parameter> automatable = panner->what_can_be_automated ();
set<Evoral::Parameter>::iterator a;
@@ -352,7 +352,7 @@ Strip::notify_panner_azi_changed (bool force_update)
boost::shared_ptr<Pannable> pannable = _route->pannable();
- if (!pannable || !pannable->panner()) {
+ if (!pannable || !_route->panner()) {
_surface->write (_vpot->zero());
return;
}
@@ -391,7 +391,7 @@ Strip::notify_panner_width_changed (bool force_update)
boost::shared_ptr<Pannable> pannable = _route->pannable();
- if (!pannable || !pannable->panner()) {
+ if (!pannable || !_route->panner()) {
_surface->write (_vpot->zero());
return;
}
@@ -606,8 +606,8 @@ Strip::do_parameter_display (AutomationType type, float val)
case PanAzimuthAutomation:
if (_route) {
boost::shared_ptr<Pannable> p = _route->pannable();
- if (p && p->panner()) {
- string str = p->panner()->value_as_string (p->pan_azimuth_control);
+ if (p && _route->panner()) {
+ string str =_route->panner()->value_as_string (p->pan_azimuth_control);
_surface->write (display (1, str));
}
}
diff --git a/libs/vamp-plugins/Onset.cpp b/libs/vamp-plugins/Onset.cpp
index f97af203c7..b8a9717024 100644
--- a/libs/vamp-plugins/Onset.cpp
+++ b/libs/vamp-plugins/Onset.cpp
@@ -146,10 +146,10 @@ Onset::initialise(size_t channels, size_t stepSize, size_t blockSize)
return true;
}
-#ifdef HAVE_AUBIO4
void
Onset::reset()
{
+#ifdef HAVE_AUBIO4
if (m_onsetdet) del_aubio_onset(m_onsetdet);
m_onsetdet = new_aubio_onset
@@ -166,8 +166,8 @@ Onset::reset()
lrintf(m_inputSampleRate));
m_lastOnset = Vamp::RealTime::zeroTime - m_delay - m_delay;
-}
#endif
+}
size_t
Onset::getPreferredStepSize() const