, no_panner_reset (false)
, scnt (0)
{
- _panshell = boost::shared_ptr<PannerShell>(new PannerShell (_name, _session, pannable));
+ if (pannable) {
+ _panshell = boost::shared_ptr<PannerShell>(new PannerShell (_name, _session, pannable));
+ }
+
_display_to_user = false;
if (_output) {
, no_panner_reset (false)
, scnt (0)
{
- _panshell = boost::shared_ptr<PannerShell>(new PannerShell (_name, _session, pannable));
+ if (pannable) {
+ _panshell = boost::shared_ptr<PannerShell>(new PannerShell (_name, _session, pannable));
+ }
+
_display_to_user = false;
if (_output) {
Amp::apply_simple_gain (bufs, nframes, tgain);
}
- panner = _panshell->panner();
+ if (_panshell) {
+ panner = _panshell->panner();
+ }
#if 0
if (_session.transport_rolling()) {
}
node.add_property("role", enum_2_string(_role));
- node.add_child_nocopy (_panshell->state (full_state));
+
+ if (_panshell) {
+ node.add_child_nocopy (_panshell->state (full_state));
+ }
return node;
}
XMLNode* pan_node = node.child (X_("Panner"));
- if (pan_node) {
+ if (pan_node && _panshell) {
_panshell->set_state (*pan_node, version);
}
ntargets = _configured_output.n_audio();
}
- _panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, ntargets));
-
- if (_role == Main) {
- _panshell->pannable()->set_panner (_panshell->panner());
- }
+ if (_panshell) {
+ _panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, ntargets));
+
+ if (_role == Main) {
+ _panshell->pannable()->set_panner (_panshell->panner());
+ }
+ }
}
} else {
ntargets = _configured_output.n_audio();
}
- _panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, ntargets));
-
- if (_role == Main) {
- _panshell->pannable()->set_panner (_panshell->panner());
- }
+ if (_panshell) {
+ _panshell->configure_io (ChanCount (DataType::AUDIO, pans_required()), ChanCount (DataType::AUDIO, ntargets));
+
+ if (_role == Main) {
+ _panshell->pannable()->set_panner (_panshell->panner());
+ }
+ }
panner_legal_c.disconnect ();
return 0;
Delivery::transport_stopped (framepos_t now)
{
Processor::transport_stopped (now);
- _panshell->pannable()->transport_stopped (now);
+
+ if (_panshell) {
+ _panshell->pannable()->transport_stopped (now);
+ }
if (_output) {
PortSet& ports (_output->ports());
boost::shared_ptr<Panner>
Delivery::panner () const
{
- return _panshell->panner();
+ if (_panshell) {
+ return _panshell->panner();
+ } else {
+ return boost::shared_ptr<Panner>();
+ }
}
/* panning */
- Pannable* p = new Pannable (_session);
+ if (!(_flags & Route::MonitorOut)) {
+ Pannable* p = new Pannable (_session);
#ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
- boost_debug_shared_ptr_mark_interesting (p, "Pannable");
+ boost_debug_shared_ptr_mark_interesting (p, "Pannable");
#endif
- _pannable.reset (p);
+ _pannable.reset (p);
+ }
/* input and output objects */
cmt->add_content (_comment);
}
- node->add_child_nocopy (_pannable->state (full_state));
+ if (_pannable) {
+ node->add_child_nocopy (_pannable->state (full_state));
+ }
for (i = _processors.begin(); i != _processors.end(); ++i) {
node->add_child_nocopy((*i)->state (full_state));
if (child->name() == X_("Pannable")) {
- _pannable->set_state (*child, version);
+ if (_pannable) {
+ _pannable->set_state (*child, version);
+ } else {
+ warning << string_compose (_("Pannable state found for route (%1) without a panner!"), name()) << endmsg;
+ }
}
}
void
Route::automation_snapshot (framepos_t now, bool force)
{
- _pannable->automation_snapshot (now, force);
+ if (_pannable) {
+ _pannable->automation_snapshot (now, force);
+ }
+
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
(*i)->automation_snapshot (now, force);
}
}
/* pan automation */
- {
+ if (_pannable) {
ControlSet::Controls& c (_pannable->controls());
for (ControlSet::Controls::const_iterator ci = c.begin(); ci != c.end(); ++ci) {