diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-30 22:09:12 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-30 22:09:12 -0400 |
commit | 3057fcf15717a3dd58ea4916f52e4e0b4e584671 (patch) | |
tree | 12cda8b2aa526da7d805337cbb9f5d6b40198a00 /libjack/metadata.c | |
parent | dee55cbc0757fef391b9073df8565bbd435d0ff6 (diff) | |
download | jack1-3057fcf15717a3dd58ea4916f52e4e0b4e584671.tar.gz |
add property change notifications
Diffstat (limited to 'libjack/metadata.c')
-rw-r--r-- | libjack/metadata.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libjack/metadata.c b/libjack/metadata.c index ff1b45f..a5692d8 100644 --- a/libjack/metadata.c +++ b/libjack/metadata.c @@ -72,9 +72,22 @@ jack_properties_uninit () void jack_free_description(jack_description_t* desc) { + /* XXX iterate over each property, free values, then free desc itself */ return; } +static int +jack_property_change_notify (jack_client_t* client, jack_uuid_t uuid, const char* key, jack_property_change_t change) +{ + jack_request_t req; + req.type = PropertyChangeNotify; + req.x.property.change = change; + jack_uuid_copy (req.x.property.uuid, uuid); + req.x.property.keylen = key ? strlen (key) + 1 : 0; + req.x.property.key = key; + return jack_client_deliver_request (client, &req); +} + static void make_key_dbt (DBT* dbt, jack_uuid_t subject, const char* key) { @@ -138,6 +151,8 @@ jack_set_property (jack_client_t* client, return -1; } + jack_property_change_notify (client, subject, key, PropertyChanged); + return 0; } @@ -404,6 +419,9 @@ jack_remove_property (jack_client_t* client, jack_uuid_t subject, const char* ke jack_error ("Cannot delete key %s (%s)", key, db_strerror (ret)); return -1; } + + jack_property_change_notify (client, subject, key, PropertyDeleted); + return 0; } @@ -465,6 +483,8 @@ jack_remove_properties (jack_client_t* client, jack_uuid_t subject) cursor->close (cursor); + jack_property_change_notify (client, subject, NULL, PropertyDeleted); + return retval; } @@ -472,6 +492,7 @@ int jack_remove_all_properties (jack_client_t* client) { int ret; + jack_uuid_t empty_uuid; if (jack_property_init (NULL)) { return -1; @@ -482,5 +503,8 @@ jack_remove_all_properties (jack_client_t* client) return -1; } + jack_uuid_clear (empty_uuid); + jack_property_change_notify (client, empty_uuid, NULL, PropertyDeleted); + return 0; } |