diff options
author | David Robillard <d@drobilla.net> | 2012-05-22 03:30:42 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-05-22 03:30:42 +0000 |
commit | b1d4027b58465d9cc31d6cb1be05a7ff4f202711 (patch) | |
tree | b1b7e9d1379fc16c5f451fda7afff0d2bc071e18 /src/server/events/SetPortValue.cpp | |
parent | e3b0886bfbd12f65450d4b302371f07f511458c3 (diff) | |
download | ingen-b1d4027b58465d9cc31d6cb1be05a7ff4f202711.tar.gz ingen-b1d4027b58465d9cc31d6cb1be05a7ff4f202711.tar.bz2 ingen-b1d4027b58465d9cc31d6cb1be05a7ff4f202711.zip |
More work on test suite.
Clean up, simplify, and shrink event code.
Support disconnect_all via Atom protocol.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4432 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/SetPortValue.cpp')
-rw-r--r-- | src/server/events/SetPortValue.cpp | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/server/events/SetPortValue.cpp b/src/server/events/SetPortValue.cpp index b4b26ccf..9eb57d55 100644 --- a/src/server/events/SetPortValue.cpp +++ b/src/server/events/SetPortValue.cpp @@ -69,19 +69,20 @@ SetPortValue::~SetPortValue() { } -void +bool SetPortValue::pre_process() { - if (_queued) { - if (_port == NULL) - _port = _engine.engine_store()->find_port(_port_path); - if (_port == NULL) - _status = PORT_NOT_FOUND; + if (_queued && !_port) { + _port = _engine.engine_store()->find_port(_port_path); + } + + if (!_port) { + return Event::pre_process_done(PORT_NOT_FOUND); } // Port is a message context port, set its value and // call the plugin's message run function once - if (_port && _port->parent_node()->context() == Context::MESSAGE) { + if (_port->parent_node()->context() == Context::MESSAGE) { apply(_engine.message_context()); _engine.message_context().run( _engine.message_context(), @@ -89,20 +90,18 @@ SetPortValue::pre_process() _engine.driver()->frame_time() + _engine.driver()->block_length()); } - if (_port) { - _port->set_value(_value); - _port->set_property(_engine.world()->uris().ingen_value, _value); - } + // Set value metadata (does not affect buffers) + _port->set_value(_value); + _port->set_property(_engine.world()->uris().ingen_value, _value); _binding = _engine.control_bindings()->port_binding(_port); - Event::pre_process(); + return Event::pre_process_done(SUCCESS); } void SetPortValue::execute(ProcessContext& context) { - Event::execute(context); assert(_time >= context.start() && _time <= context.end()); if (_port && _port->parent_node()->context() == Context::MESSAGE) |