summaryrefslogtreecommitdiffstats
path: root/src/engine/ConnectionImpl.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-11-22 05:13:47 +0000
committerDavid Robillard <d@drobilla.net>2009-11-22 05:13:47 +0000
commit1745a63b874c296253a27ca7ad95d3a7b17822f7 (patch)
tree63bb78f0c34372f70634ea6122d83ed07019dc88 /src/engine/ConnectionImpl.cpp
parente479da3c26d41e977cf55b8e2355db45991be09f (diff)
downloadingen-1745a63b874c296253a27ca7ad95d3a7b17822f7.tar.gz
ingen-1745a63b874c296253a27ca7ad95d3a7b17822f7.tar.bz2
ingen-1745a63b874c296253a27ca7ad95d3a7b17822f7.zip
Execute cross-context events in correct increasing time order.
Propagate value changes / message sends breadth first instead of deptch first. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2282 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/ConnectionImpl.cpp')
-rw-r--r--src/engine/ConnectionImpl.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/engine/ConnectionImpl.cpp b/src/engine/ConnectionImpl.cpp
index 27786e00..1973397d 100644
--- a/src/engine/ConnectionImpl.cpp
+++ b/src/engine/ConnectionImpl.cpp
@@ -146,7 +146,8 @@ ConnectionImpl::queue(Context& context)
}
while (src_buf->is_valid()) {
- LV2_Object* obj = src_buf->get_object();
+ LV2_Event* ev = src_buf->get_event();
+ LV2_Object* obj = LV2_OBJECT_FROM_EVENT(ev);
/*cout << _src_port->path() << " -> " << _dst_port->path()
<< " QUEUE OBJECT TYPE " << obj->type << ":";
for (size_t i = 0; i < obj->size; ++i)
@@ -156,7 +157,8 @@ ConnectionImpl::queue(Context& context)
_queue->write(sizeof(LV2_Object) + obj->size, obj);
src_buf->increment();
- context.engine().message_context()->run(_dst_port->parent_node());
+ context.engine().message_context()->run(_dst_port->parent_node(),
+ context.start() + ev->frames);
}
}