/*
- Copyright (C) 2000,2007 Paul Davis
+ Copyright (C) 2000,2007 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
, _out (new Delivery (s, _output, mm, _name, Delivery::Insert))
{
- if (set_state (node)) {
+ if (set_state (node, Stateful::loading_state_version)) {
throw failed_constructor();
}
}
void
-PortInsert::run_in_place (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes)
+PortInsert::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes)
{
if (_output->n_ports().n_total() == 0) {
return;
}
- if (!active()) {
+ if (!_active && !_pending_active) {
/* deliver silence */
silence (nframes);
- return;
+ goto out;
}
- _out->run_in_place (bufs, start_frame, end_frame, nframes);
+ _out->run (bufs, start_frame, end_frame, nframes);
_input->collect_input (bufs, nframes, ChanCount::ZERO);
+
+ out:
+ _active = _pending_active;
}
XMLNode&
}
int
-PortInsert::set_state(const XMLNode& node)
+PortInsert::set_state (const XMLNode& node, int version)
{
XMLNodeList nlist = node.children();
XMLNodeIterator niter;
error << _("XML node describing port insert is missing the `type' field") << endmsg;
return -1;
}
-
+
if (prop->value() != "port") {
error << _("non-port insert XML used for port plugin insert") << endmsg;
return -1;
break;
}
}
-
- Processor::set_state (*insert_node);
+
+ Processor::set_state (*insert_node, version);
return 0;
}
-ARDOUR::nframes_t
+ARDOUR::nframes_t
PortInsert::signal_latency() const
{
/* because we deliver and collect within the same cycle,