void
IO::disconnect_check (boost::shared_ptr<Port> a, boost::shared_ptr<Port> b)
{
+ if (_session.state_of_the_state () & Session::Deletion) {
+ return;
+ }
/* this could be called from within our own ::disconnect() method(s)
or from somewhere that operates directly on a port. so, we don't
know for sure if we can take this lock or not. if we fail,
char buf[64];
string str;
int n;
- LocaleGuard lg (X_("C"));
+ LocaleGuard lg;
Glib::Threads::Mutex::Lock lm (io_lock);
node->add_property("name", _name);
*/
assert (version >= 3000);
- const XMLProperty* prop;
+ XMLProperty const * prop;
XMLNodeConstIterator iter;
- LocaleGuard lg (X_("C"));
+ LocaleGuard lg;
/* force use of non-localized representation of decimal point,
since we use it a lot in XML files and so forth.
int
IO::set_state_2X (const XMLNode& node, int version, bool in)
{
- const XMLProperty* prop;
+ XMLProperty const * prop;
XMLNodeConstIterator iter;
- LocaleGuard lg (X_("C"));
+ LocaleGuard lg;
/* force use of non-localized representation of decimal point,
since we use it a lot in XML files and so forth.
return make_connections_2X (node, version, in);
}
- const XMLProperty* prop;
+ XMLProperty const * prop;
for (XMLNodeConstIterator i = node.children().begin(); i != node.children().end(); ++i) {
the name of the thing we're applying it to.
*/
- XMLProperty* prop;
+ XMLProperty * prop;
XMLNodeList children = node.children();
for (XMLNodeIterator i = children.begin(); i != children.end(); ++i) {
int
IO::make_connections_2X (const XMLNode& node, int /*version*/, bool in)
{
- const XMLProperty* prop;
+ XMLProperty const * prop;
/* XXX: bundles ("connections" as was) */
case 2:
return c == 0 ? _("L") : _("R");
default:
- snprintf (buf, sizeof(buf), _("%d"), (c + 1));
+ snprintf (buf, sizeof(buf), "%d", (c + 1));
return buf;
}
} else {
- snprintf (buf, sizeof(buf), _("%d"), (c + 1));
+ snprintf (buf, sizeof(buf), "%d", (c + 1));
return buf;
}
string
IO::name_from_state (const XMLNode& node)
{
- const XMLProperty* prop;
+ XMLProperty const * prop;
if ((prop = node.property ("name")) != 0) {
return prop->value();
* Caller must hold process lock.
*/
void
-IO::process_input (boost::shared_ptr<Processor> proc, framepos_t start_frame, framepos_t end_frame, pframes_t nframes)
+IO::process_input (boost::shared_ptr<Processor> proc, framepos_t start_frame, framepos_t end_frame, double speed, pframes_t nframes)
{
/* don't read the data into new buffers - just use the port buffers directly */
_buffers.get_backend_port_addresses (_ports, nframes);
if (proc) {
- proc->run (_buffers, start_frame, end_frame, nframes, true);
+ proc->run (_buffers, start_frame, end_frame, speed, nframes, true);
}
}
void
IO::copy_to_outputs (BufferSet& bufs, DataType type, pframes_t nframes, framecnt_t offset)
{
- // Copy any buffers 1:1 to outputs
-
PortSet::iterator o = _ports.begin(type);
BufferSet::iterator i = bufs.begin(type);
BufferSet::iterator prev = i;
+ assert(i != bufs.end(type)); // or second loop will crash
+
+ // Copy any buffers 1:1 to outputs
+
while (i != bufs.end(type) && o != _ports.end (type)) {
Buffer& port_buffer (o->get_buffer (nframes));
port_buffer.read_from (*i, nframes, offset);