diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-01-14 21:13:21 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-01-14 21:13:21 -0500 |
commit | 37b1f5017e904005fae6b815b1519b3fa595d8d3 (patch) | |
tree | 35f4da37569cfadc1554f5f212efa54e8ec89d91 /libs | |
parent | adc2edc05cf2357d911c4767f6bb63bcf53145d8 (diff) | |
parent | 35c170937de6150ae09154f96e4920d30e83f6ce (diff) |
merge with master
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/delivery.cc | 11 | ||||
-rw-r--r-- | libs/ardour/panner_shell.cc | 37 | ||||
-rw-r--r-- | libs/ardour/send.cc | 2 | ||||
-rw-r--r-- | libs/panners/vbap/vbap.cc | 3 | ||||
-rw-r--r-- | libs/surfaces/mackie/strip.cc | 12 | ||||
-rw-r--r-- | libs/vamp-plugins/Onset.cpp | 4 |
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 |