From 04ce7d432a9d8e356d8dee2753ef6b0982f05f6e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 1 Oct 2013 10:21:30 -0400 Subject: differentiate between property changed/created in PropertyChange notification (by testing for existence first) --- libjack/metadata.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libjack') 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; } -- cgit v1.2.1