summaryrefslogtreecommitdiffstats
path: root/src/engine/InputPort.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-02-26 02:23:52 +0000
committerDavid Robillard <d@drobilla.net>2010-02-26 02:23:52 +0000
commitf982e4b62ebba89ead634169ebe4e281cc7df46a (patch)
treee26ac29eebbdc1fa4cf034913a1cb944fa74b4d9 /src/engine/InputPort.cpp
parent52e49500bb78974d43bdfd30b2ec9b2a4522dd25 (diff)
downloadingen-f982e4b62ebba89ead634169ebe4e281cc7df46a.tar.gz
ingen-f982e4b62ebba89ead634169ebe4e281cc7df46a.tar.bz2
ingen-f982e4b62ebba89ead634169ebe4e281cc7df46a.zip
Fix queued connections (e.g. event input => print).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2495 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/InputPort.cpp')
-rw-r--r--src/engine/InputPort.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/engine/InputPort.cpp b/src/engine/InputPort.cpp
index 4c5b56e2..95af5725 100644
--- a/src/engine/InputPort.cpp
+++ b/src/engine/InputPort.cpp
@@ -92,7 +92,7 @@ InputPort::get_buffers(BufferFactory& bufs, Raul::Array<BufferFactory::Ref>* buf
} else if (num_connections == 1) {
if (ThreadManager::current_thread_id() == THREAD_PROCESS) {
- if (!_connections.front()->must_mix()) {
+ if (!_connections.front()->must_mix() && !_connections.front()->must_queue()) {
// Single non-mixing conneciton, use buffers directly
for (uint32_t v = 0; v < poly; ++v)
buffers->at(v) = _connections.front()->buffer(v);
@@ -180,7 +180,7 @@ InputPort::pre_process(Context& context)
for (Connections::iterator c = _connections.begin(); c != _connections.end(); ++c)
max_num_srcs += (*c)->src_port()->poly();
- Buffer* srcs[max_num_srcs];
+ IntrusivePtr<Buffer> srcs[max_num_srcs];
if (_connections.empty()) {
for (uint32_t v = 0; v < _poly; ++v) {
@@ -217,8 +217,8 @@ InputPort::post_process(Context& context)
bool
InputPort::direct_connect() const
{
- ThreadManager::assert_thread(THREAD_PROCESS);
- return _connections.size() == 1 && !_connections.front()->must_mix();
+ return _connections.size() == 1 && !_connections.front()->must_mix()
+ && !_connections.front()->must_queue();
}