diff options
author | David Robillard <d@drobilla.net> | 2015-10-24 19:27:39 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2015-10-24 19:27:39 +0000 |
commit | 732bfb33105b4a534bc17caae9a50a1ccfcd7570 (patch) | |
tree | bad9715a99f11d17342adaef372361c3697beee9 /src/server/events/Connect.cpp | |
parent | ade7143eb2af64fd6743a64ebf1786dd5bbe1092 (diff) | |
download | ingen-732bfb33105b4a534bc17caae9a50a1ccfcd7570.tar.gz ingen-732bfb33105b4a534bc17caae9a50a1ccfcd7570.tar.bz2 ingen-732bfb33105b4a534bc17caae9a50a1ccfcd7570.zip |
Zero-copy to/from driver ports where possible
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5778 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/Connect.cpp')
-rw-r--r-- | src/server/events/Connect.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/server/events/Connect.cpp b/src/server/events/Connect.cpp index 1f22e6f2..5eff8854 100644 --- a/src/server/events/Connect.cpp +++ b/src/server/events/Connect.cpp @@ -123,11 +123,13 @@ Connect::pre_process() lock.unlock(); - _voices = new Raul::Array<PortImpl::Voice>(_head->poly()); - _head->get_buffers(*_engine.buffer_factory(), - _voices, - _head->poly(), - false); + if (!_head->is_driver_port()) { + _voices = new Raul::Array<PortImpl::Voice>(_head->poly()); + _head->get_buffers(*_engine.buffer_factory(), + _voices, + _head->poly(), + false); + } if (_graph->enabled()) { _compiled_graph = _graph->compile(); @@ -141,7 +143,9 @@ Connect::execute(ProcessContext& context) { if (_status == Status::SUCCESS) { _head->add_arc(context, _arc.get()); - _engine.maid()->dispose(_head->set_voices(context, _voices)); + if (!_head->is_driver_port()) { + _engine.maid()->dispose(_head->set_voices(context, _voices)); + } _head->connect_buffers(); _graph->set_compiled_graph(_compiled_graph); } |