From 13b81f9fb91ee20a41ccdd955c2539d46ef6b6e1 Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Wed, 15 Nov 2017 13:16:21 -0700 Subject: Fix `get_icon` Property reply functions are now notified if there was an error with the property instead of silent failure. Also issues in `get_item` were resolved. --- include/swaybar/tray/dbus.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'include/swaybar/tray') diff --git a/include/swaybar/tray/dbus.h b/include/swaybar/tray/dbus.h index 125ce96f..c693e6f7 100644 --- a/include/swaybar/tray/dbus.h +++ b/include/swaybar/tray/dbus.h @@ -5,6 +5,13 @@ #include extern DBusConnection *conn; +enum property_status { + PROP_EXISTS, /* Will give iter */ + PROP_ERROR, /* Will not give iter */ + PROP_BAD_DATA, /* Will not give iter */ + PROP_WRONG_SIG, /* Will give iter, please be careful */ +}; + /** * Checks the signature of the given iter against `sig`. Prefer to * `dbus_message_iter_get_signature` as this one frees the intermediate string. @@ -15,8 +22,9 @@ bool dbus_message_iter_check_signature(DBusMessageIter *iter, const char *sig); * Fetches the property and calls `callback` with a message iter pointing it. * Performs error handling and signature checking. * - * Returns: true if message is successfully sent (will not necessarily arrive) - * and false otherwise + * Returns: true if message is successfully sent and false otherwise. If there + * is an error getting a property, `callback` will still be run, but with + * `status` set to the error. * * NOTE: `expected_signature` must remain valid until the message reply is * received, please only use 'static signatures. @@ -26,7 +34,7 @@ bool dbus_get_prop_async(const char *destination, const char *iface, const char *prop, const char *expected_signature, - void(*callback)(DBusMessageIter *iter, void *data), + void(*callback)(DBusMessageIter *iter, void *data, enum property_status status), void *data); /** * Should be called in main loop to dispatch events -- cgit v1.2.3-70-g09d2