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.
This commit is contained in:
Calvin Lee 2017-11-15 13:16:21 -07:00
parent 87035380e3
commit 13b81f9fb9
4 changed files with 47 additions and 17 deletions

View file

@ -5,6 +5,13 @@
#include <dbus/dbus.h>
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