diff options
author | Kyle Brenneman <[email protected]> | 2019-09-03 20:56:50 -0600 |
---|---|---|
committer | Martin Wimpress <[email protected]> | 2019-09-17 08:40:13 +0100 |
commit | 8dad8a7e2d1aa2ff1bd7dd434c7ccb58575d47c6 (patch) | |
tree | 7fd284e1b4afc41cc1e1a146e6b1074f069b56a7 /src/themes/standard | |
parent | 6f41c85b6baf66ed8c7a967b1cba95d11ffdae88 (diff) | |
download | mate-notification-daemon-8dad8a7e2d1aa2ff1bd7dd434c7ccb58575d47c6.tar.bz2 mate-notification-daemon-8dad8a7e2d1aa2ff1bd7dd434c7ccb58575d47c6.tar.xz |
Fix decoding the hints dictionary.
g_variant_lookup works like g_variant_get, so using a format string of "v" only
works if the type is actually a GVariant. Since none of the hints have GVariant
values, that means every g_variant_get with a "v" format will fail.
Fix all of the g_variant_lookup calls so that they either unpack a value
directly, or use a "@" prefix when it's more convenient to fetch the value as
a GVariant pointer.
In addition, in cases where we do fetch a GVariant, make sure that we
unreference it afterward.
Diffstat (limited to 'src/themes/standard')
-rw-r--r-- | src/themes/standard/theme.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/themes/standard/theme.c b/src/themes/standard/theme.c index 91147c2..d36bda3 100644 --- a/src/themes/standard/theme.c +++ b/src/themes/standard/theme.c @@ -796,16 +796,14 @@ GtkWindow* create_notification(UrlClickedCb url_clicked) void set_notification_hints(GtkWindow *nw, GVariant *hints) { WindowData *windata = g_object_get_data(G_OBJECT(nw), "windata"); - GVariant *value = NULL, *icon_value = NULL; + guint8 urgency; + gboolean action_icons; g_assert(windata != NULL); - g_variant_lookup(hints, "urgency", "v", &value); - g_variant_lookup(hints, "action-icons", "v", &icon_value); - - if (value != NULL && g_variant_get_type(value) == G_VARIANT_TYPE_BYTE) + if (g_variant_lookup(hints, "urgency", "y", &urgency)) { - windata->urgency = g_variant_get_byte(value); + windata->urgency = urgency; if (windata->urgency == URGENCY_CRITICAL) { gtk_window_set_title(GTK_WINDOW(nw), "Critical Notification"); @@ -815,9 +813,9 @@ void set_notification_hints(GtkWindow *nw, GVariant *hints) } /* Determine if action-icons have been requested */ - if (icon_value != NULL && g_variant_get_type(icon_value) == G_VARIANT_TYPE_BOOLEAN) + if (g_variant_lookup(hints, "action-icons", "b", &action_icons)) { - windata->action_icons = g_variant_get_boolean(icon_value); + windata->action_icons = action_icons; } } |