diff options
author | David Robillard <d@drobilla.net> | 2012-05-15 01:52:08 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-05-15 01:52:08 +0000 |
commit | 22209796627acfef17c53d4cf523eed3daa26c2b (patch) | |
tree | d800c6ba96f7f8f6673a4e7da6409760001095af /src/server/events/CreatePort.cpp | |
parent | f4f72247ae1f5eac8610a145c119accf0b6097d9 (diff) | |
download | ingen-22209796627acfef17c53d4cf523eed3daa26c2b.tar.gz ingen-22209796627acfef17c53d4cf523eed3daa26c2b.tar.bz2 ingen-22209796627acfef17c53d4cf523eed3daa26c2b.zip |
Eliminate long-duration event locks by generated responses in pre_process().
This also fixes some correctness issues, since the state at pre_process() time is actually the state that needs to be broadcast to clients.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4416 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/CreatePort.cpp')
-rw-r--r-- | src/server/events/CreatePort.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/server/events/CreatePort.cpp b/src/server/events/CreatePort.cpp index c4ba0a3b..d8c183cd 100644 --- a/src/server/events/CreatePort.cpp +++ b/src/server/events/CreatePort.cpp @@ -134,7 +134,6 @@ CreatePort::pre_process() assert(index_i->second == _engine.world()->forge().make((int)_patch_port->index())); if (_patch_port) { - if (_is_output) _patch->add_output(new Raul::List<PortImpl*>::Node(_patch_port)); else @@ -159,6 +158,9 @@ CreatePort::pre_process() _status = CREATION_FAILED; } } + + _update = _patch_port->properties(); + Event::pre_process(); } @@ -182,7 +184,7 @@ CreatePort::post_process() { respond(_status); if (!_status) { - _engine.broadcaster()->send_object(_patch_port, true); + _engine.broadcaster()->put(_path, _update); } } |