summaryrefslogtreecommitdiffstats
path: root/src/engine/events/SetMetadata.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-19 04:07:02 +0000
committerDavid Robillard <d@drobilla.net>2009-10-19 04:07:02 +0000
commita0108c19c4704316a02c85676af349acdda29d72 (patch)
treec971fe3fa385bd3abfb3d450f7f2b4e1a718ed60 /src/engine/events/SetMetadata.hpp
parent78ebb57ba3268da3560aa596dfe14c515f617890 (diff)
downloadingen-a0108c19c4704316a02c85676af349acdda29d72.tar.gz
ingen-a0108c19c4704316a02c85676af349acdda29d72.tar.bz2
ingen-a0108c19c4704316a02c85676af349acdda29d72.zip
Fix set/PUT with multiple properties of the same predicate.
Actually set port value when PUT of ingen:value occurs (fix ticket #410). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2198 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/events/SetMetadata.hpp')
-rw-r--r--src/engine/events/SetMetadata.hpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/engine/events/SetMetadata.hpp b/src/engine/events/SetMetadata.hpp
index 3fd3c904..cf33b5aa 100644
--- a/src/engine/events/SetMetadata.hpp
+++ b/src/engine/events/SetMetadata.hpp
@@ -57,6 +57,8 @@ namespace Events {
* properties from the message.
*/
+class SetPortValue;
+
/** Set properties of a graph object.
* \ingroup engine
*/
@@ -68,10 +70,13 @@ public:
SharedPtr<Responder> responder,
SampleCount timestamp,
QueuedEventSource* source,
+ bool replace,
bool meta,
const Raul::URI& subject,
const Shared::Resource::Properties& properties);
+ ~SetMetadata();
+
void pre_process();
void execute(ProcessContext& context);
void post_process();
@@ -86,13 +91,17 @@ private:
POLYPHONIC
};
+ typedef std::vector<SetPortValue*> SetEvents;
+
QueuedEvent* _create_event;
+ SetEvents _set_events;
std::vector<SpecialType> _types;
Raul::URI _subject;
Shared::Resource::Properties _properties;
Shared::ResourceImpl* _object;
PatchImpl* _patch;
CompiledPatch* _compiled_patch;
+ bool _replace;
bool _is_meta;
bool _success;
};