diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-01 10:21:30 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-01 10:21:30 -0400 |
commit | 04ce7d432a9d8e356d8dee2753ef6b0982f05f6e (patch) | |
tree | fe87afb5ab83a147bc3a5b6200488ef847e6f802 | |
parent | f16226623bf00ac6b38c9a9e345cfbb708ba92bb (diff) | |
download | jack1-04ce7d432a9d8e356d8dee2753ef6b0982f05f6e.tar.gz |
differentiate between property changed/created in PropertyChange notification (by testing for existence first)
-rw-r--r-- | libjack/metadata.c | 9 |
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; } |