From 732bfb33105b4a534bc17caae9a50a1ccfcd7570 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 24 Oct 2015 19:27:39 +0000 Subject: Zero-copy to/from driver ports where possible git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5778 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/events/CreatePort.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/server/events/CreatePort.cpp') diff --git a/src/server/events/CreatePort.cpp b/src/server/events/CreatePort.cpp index 173b8a73..0b58ee89 100644 --- a/src/server/events/CreatePort.cpp +++ b/src/server/events/CreatePort.cpp @@ -125,12 +125,19 @@ CreatePort::pre_process() poly_i->second.type() == uris.forge.Bool && poly_i->second.get()); - if (!(_graph_port = _graph->create_port( - bufs, Raul::Symbol(_path.symbol()), - _port_type, _buf_type, buf_size, _is_output, polyphonic))) { - return Event::pre_process_done(Status::CREATION_FAILED, _path); + // Create 0 value if the port requires one + Atom value; + if (_port_type == PortType::CONTROL || _port_type == PortType::CV) { + value = bufs.forge().make(0.0f); } + // Create port + _graph_port = new DuplexPort(bufs, _graph, Raul::Symbol(_path.symbol()), + _graph->num_ports_non_rt(), + polyphonic, + _port_type, _buf_type, buf_size, + value, _is_output); + _graph_port->properties().insert(_properties.begin(), _properties.end()); _engine.store()->add(_graph_port); @@ -141,8 +148,7 @@ CreatePort::pre_process() } if (!_graph->parent()) { - _engine_port = _engine.driver()->create_port( - dynamic_cast(_graph_port)); + _engine_port = _engine.driver()->create_port(_graph_port); } _ports_array = new Raul::Array(old_n_ports + 1, NULL); -- cgit v1.2.1