diff options
author | Ted Gould <ted@gould.cx> | 2010-11-18 11:54:41 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-11-18 11:54:41 -0600 |
commit | 62a03e300af33f8ad306c08337f33f59fb8511b3 (patch) | |
tree | 8d0ecf7ade1f30906ff12c2ff4056fe10c31e273 /libdbusmenu-glib | |
parent | acf4557c9c5b7d87c5b7b0f1df2b535a6dd11671 (diff) | |
download | libdbusmenu-62a03e300af33f8ad306c08337f33f59fb8511b3.tar.gz libdbusmenu-62a03e300af33f8ad306c08337f33f59fb8511b3.tar.bz2 libdbusmenu-62a03e300af33f8ad306c08337f33f59fb8511b3.zip |
Cleaning up the building of the property requests
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/client.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index e0ab2d4..1e6e479 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -579,13 +579,26 @@ get_properties_idle (gpointer user_data) } /* Build up an ID list to pass */ - GArray * idlist = g_array_new(FALSE, FALSE, sizeof(gint)); + GVariantBuilder builder; + g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); + gint i; for (i = 0; i < priv->delayed_property_listeners->len; i++) { - g_array_append_val(idlist, g_array_index(priv->delayed_property_listeners, properties_listener_t, i).id); + g_variant_builder_add(&builder, "i", g_array_index(priv->delayed_property_listeners, properties_listener_t, i).id); } - GVariant * variant_params = g_variant_new("a(s)", (const gchar **)priv->delayed_property_list->data); + GVariant * variant_ids = g_variant_builder_end(&builder); + + /* Build up a prop list to pass */ + g_variant_builder_init(&builder, g_variant_type_new("as")); + GVariant * variant_props = g_variant_builder_end(&builder); + + /* Combine them into a value for the parameter */ + g_variant_builder_init(&builder, G_VARIANT_TYPE_TUPLE); + g_variant_builder_add_value(&builder, variant_ids); + g_variant_builder_add_value(&builder, variant_props); + GVariant * variant_params = g_variant_builder_end(&builder); + g_dbus_proxy_call(priv->menuproxy, "GetGroupProperties", variant_params, @@ -595,9 +608,6 @@ get_properties_idle (gpointer user_data) get_properties_callback, priv->delayed_property_listeners); - /* Free ID List */ - g_array_free(idlist, TRUE); - /* Free properties */ gchar ** dataregion = (gchar **)g_array_free(priv->delayed_property_list, FALSE); if (dataregion != NULL) { |