aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-11-18 11:54:41 -0600
committerTed Gould <ted@gould.cx>2010-11-18 11:54:41 -0600
commit62a03e300af33f8ad306c08337f33f59fb8511b3 (patch)
tree8d0ecf7ade1f30906ff12c2ff4056fe10c31e273
parentacf4557c9c5b7d87c5b7b0f1df2b535a6dd11671 (diff)
downloadlibdbusmenu-62a03e300af33f8ad306c08337f33f59fb8511b3.tar.gz
libdbusmenu-62a03e300af33f8ad306c08337f33f59fb8511b3.tar.bz2
libdbusmenu-62a03e300af33f8ad306c08337f33f59fb8511b3.zip
Cleaning up the building of the property requests
-rw-r--r--libdbusmenu-glib/client.c22
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) {