summaryrefslogtreecommitdiffstats
path: root/src/server/events/Delta.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-11-18 18:46:53 +0000
committerDavid Robillard <d@drobilla.net>2012-11-18 18:46:53 +0000
commitd358cae57b7233bf6b781686979fc4dea4d090b3 (patch)
treee60f45f73892fd62fea6caef507567c57722b5b9 /src/server/events/Delta.cpp
parentc8745c6975c6173d08957c4a16bf8b95831ec05a (diff)
downloadingen-d358cae57b7233bf6b781686979fc4dea4d090b3.tar.gz
ingen-d358cae57b7233bf6b781686979fc4dea4d090b3.tar.bz2
ingen-d358cae57b7233bf6b781686979fc4dea4d090b3.zip
Fix learn for Trigger and Internal nodes.
Set value property for inputs when a notification is sent so model is consistent (and learned values are saved correctly). Don't redundantly store value atom in PortModel, just use property directly. Fix incorrect use of lv2:integer as a predicate. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4835 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/Delta.cpp')
-rw-r--r--src/server/events/Delta.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/events/Delta.cpp b/src/server/events/Delta.cpp
index 6c935ce2..1c823cdd 100644
--- a/src/server/events/Delta.cpp
+++ b/src/server/events/Delta.cpp
@@ -166,9 +166,12 @@ Delta::pre_process()
SpecialType op = NONE;
if (obj) {
Resource& resource = *obj;
- resource.add_property(key, value, value.context());
+ if (value != uris.wildcard) {
+ resource.add_property(key, value, value.context());
+ }
- PortImpl* port = dynamic_cast<PortImpl*>(_object);
+ BlockImpl* block = NULL;
+ PortImpl* port = dynamic_cast<PortImpl*>(_object);
if (port) {
if (key == uris.ingen_broadcast) {
if (value.type() == uris.forge.Bool) {
@@ -194,6 +197,10 @@ Delta::pre_process()
_status = BAD_OBJECT_TYPE;
}
}
+ } else if ((block = dynamic_cast<BlockImpl*>(_object))) {
+ if (key == uris.ingen_controlBinding && value == uris.wildcard) {
+ op = CONTROL_BINDING; // Internal block learn
+ }
} else if ((_graph = dynamic_cast<GraphImpl*>(_object))) {
if (key == uris.ingen_enabled) {
if (value.type() == uris.forge.Bool) {