summaryrefslogtreecommitdiffstats
path: root/src/server/events/CreateNode.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-05-15 01:52:08 +0000
committerDavid Robillard <d@drobilla.net>2012-05-15 01:52:08 +0000
commit22209796627acfef17c53d4cf523eed3daa26c2b (patch)
treed800c6ba96f7f8f6673a4e7da6409760001095af /src/server/events/CreateNode.hpp
parentf4f72247ae1f5eac8610a145c119accf0b6097d9 (diff)
downloadingen-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/CreateNode.hpp')
-rw-r--r--src/server/events/CreateNode.hpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/server/events/CreateNode.hpp b/src/server/events/CreateNode.hpp
index 2b3e008b..b3b84abf 100644
--- a/src/server/events/CreateNode.hpp
+++ b/src/server/events/CreateNode.hpp
@@ -17,7 +17,8 @@
#ifndef INGEN_EVENTS_CREATENODE_HPP
#define INGEN_EVENTS_CREATENODE_HPP
-#include <string>
+#include <list>
+#include <utility>
#include "ingen/Resource.hpp"
@@ -53,16 +54,19 @@ public:
void post_process();
private:
- Raul::Path _path;
- Raul::URI _plugin_uri;
- PatchImpl* _patch;
- PluginImpl* _plugin;
- NodeImpl* _node;
- CompiledPatch* _compiled_patch; ///< Patch's new process order
- bool _node_already_exists;
- bool _polyphonic;
+ /// Update put message to broadcast to clients
+ typedef std::list< std::pair<Raul::URI, Resource::Properties> > Update;
+ Raul::Path _path;
+ Raul::URI _plugin_uri;
Resource::Properties _properties;
+ Update _update;
+ PatchImpl* _patch;
+ PluginImpl* _plugin;
+ NodeImpl* _node;
+ CompiledPatch* _compiled_patch; ///< Patch's new process order
+ bool _node_already_exists;
+ bool _polyphonic;
};
} // namespace Events