From 3dc4dcc4ca0dee958a56f43e8a635a6d961e7ccc Mon Sep 17 00:00:00 2001 From: Joshua Yun Date: Wed, 12 Mar 2025 01:28:59 -0500 Subject: Systray patch --- systray/helpers.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 systray/helpers.c (limited to 'systray/helpers.c') diff --git a/systray/helpers.c b/systray/helpers.c new file mode 100644 index 0000000..d1af9f8 --- /dev/null +++ b/systray/helpers.c @@ -0,0 +1,43 @@ +#include "helpers.h" + +#include + +#include +#include + +// IWYU pragma: no_include "dbus/dbus-protocol.h" +// IWYU pragma: no_include "dbus/dbus-shared.h" + +int +request_property(DBusConnection *conn, const char *busname, const char *busobj, + const char *prop, const char *iface, PropHandler handler, + void *data) +{ + DBusMessage *msg = NULL; + DBusPendingCall *pending = NULL; + int r; + + if (!(msg = dbus_message_new_method_call(busname, busobj, + DBUS_INTERFACE_PROPERTIES, + "Get")) || + !dbus_message_append_args(msg, DBUS_TYPE_STRING, &iface, + DBUS_TYPE_STRING, &prop, + DBUS_TYPE_INVALID) || + !dbus_connection_send_with_reply(conn, msg, &pending, -1) || + !dbus_pending_call_set_notify(pending, handler, data, NULL)) { + r = -ENOMEM; + goto fail; + } + + dbus_message_unref(msg); + return 0; + +fail: + if (pending) { + dbus_pending_call_cancel(pending); + dbus_pending_call_unref(pending); + } + if (msg) + dbus_message_unref(msg); + return r; +} -- cgit v1.2.3