summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-10-02 12:24:28 -0400
committerDavid Robillard <d@drobilla.net>2016-10-02 12:27:23 -0400
commit339937c6bf23d591664f4d7c9fffae6e5a0bf287 (patch)
tree35e4074905ed1cb7434bea3eef123b9ccab33486
parenta374d438274e350ebc02175cec7d0c4faf8c6d73 (diff)
downloadingen-339937c6bf23d591664f4d7c9fffae6e5a0bf287.tar.gz
ingen-339937c6bf23d591664f4d7c9fffae6e5a0bf287.tar.bz2
ingen-339937c6bf23d591664f4d7c9fffae6e5a0bf287.zip
Fix sending UI events to sequence ports
-rw-r--r--src/server/InputPort.cpp6
-rw-r--r--src/server/events/SetPortValue.cpp1
2 files changed, 5 insertions, 2 deletions
diff --git a/src/server/InputPort.cpp b/src/server/InputPort.cpp
index 8ee0f56a..7e7412cc 100644
--- a/src/server/InputPort.cpp
+++ b/src/server/InputPort.cpp
@@ -149,9 +149,13 @@ InputPort::pre_process(RunContext& context)
buffer(v)->update_value_buffer(context.offset());
}
} else if (_arcs.empty()) {
- // No incoming arcs, just update set state
+ // No incoming arcs, just handle user-set value
for (uint32_t v = 0; v < _poly; ++v) {
+ // Update set state
update_set_state(context, v);
+
+ // Prepare for write in case a set event executes this cycle
+ buffer(v)->prepare_write(context);
}
} else if (direct_connect()) {
// Directly connected, use source's buffer directly
diff --git a/src/server/events/SetPortValue.cpp b/src/server/events/SetPortValue.cpp
index 5bcb6dbf..9530e2d3 100644
--- a/src/server/events/SetPortValue.cpp
+++ b/src/server/events/SetPortValue.cpp
@@ -93,7 +93,6 @@ SetPortValue::apply(RunContext& context)
_status = Status::TYPE_MISMATCH;
}
} else if (buf->type() == uris.atom_Sequence) {
- buf->prepare_write(context); // FIXME: incorrect
if (buf->append_event(_time - context.start(),
_value.size(),
_value.type(),