diff options
-rw-r--r-- | src/server/InputPort.cpp | 6 | ||||
-rw-r--r-- | src/server/events/SetPortValue.cpp | 1 |
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(), |