summaryrefslogtreecommitdiff
path: root/libjack
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-10-01 10:21:30 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-10-01 10:21:30 -0400
commit04ce7d432a9d8e356d8dee2753ef6b0982f05f6e (patch)
treefe87afb5ab83a147bc3a5b6200488ef847e6f802 /libjack
parentf16226623bf00ac6b38c9a9e345cfbb708ba92bb (diff)
downloadjack1-04ce7d432a9d8e356d8dee2753ef6b0982f05f6e.tar.gz
differentiate between property changed/created in PropertyChange notification (by testing for existence first)
Diffstat (limited to 'libjack')
-rw-r--r--libjack/metadata.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libjack/metadata.c b/libjack/metadata.c
index a5692d8..31765d1 100644
--- a/libjack/metadata.c
+++ b/libjack/metadata.c
@@ -116,6 +116,7 @@ jack_set_property (jack_client_t* client,
DBT data;
int ret;
size_t len1, len2;
+ jack_property_change_t change;
if (jack_property_init (NULL)) {
return -1;
@@ -144,6 +145,12 @@ jack_set_property (jack_client_t* client,
memcpy (data.data + len1, type, len2);
}
+ if (db->exists (db, NULL, &d_key, 0) == DB_NOTFOUND) {
+ change = PropertyCreated;
+ } else {
+ change = PropertyChanged;
+ }
+
if ((ret = db->put (db, NULL, &d_key, &data, 0)) != 0) {
char ustr[JACK_UUID_STRING_SIZE];
jack_uuid_unparse (subject, ustr);
@@ -151,7 +158,7 @@ jack_set_property (jack_client_t* client,
return -1;
}
- jack_property_change_notify (client, subject, key, PropertyChanged);
+ jack_property_change_notify (client, subject, key, change);
return 0;
}