Simplify variant builder

Build the full return value with one builder, and don't unref the
unowned return value!

Bug #620954.
This commit is contained in:
Christian Persch 2010-06-08 13:36:58 +02:00
parent d3b091f63a
commit 2ab9a07ec7

View File

@ -51,22 +51,19 @@ application_dbus_method_call (GDBusConnection *connection,
GHashTableIter iter; GHashTableIter iter;
GApplicationAction *value; GApplicationAction *value;
GVariantBuilder builder; GVariantBuilder builder;
GVariant *return_args;
GVariant *result;
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); g_variant_builder_init (&builder, G_VARIANT_TYPE ("(a{s(sb)})"));
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{s(sb)}"));
g_hash_table_iter_init (&iter, app->priv->actions); g_hash_table_iter_init (&iter, app->priv->actions);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&value)) while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&value))
g_variant_builder_add (&builder, "{s(sb)}", g_variant_builder_add (&builder, "{s(sb)}",
value->name, value->name,
value->description ? value->description : "", value->description ? value->description : "",
value->enabled); value->enabled);
g_variant_builder_close (&builder);
result = g_variant_builder_end (&builder); g_dbus_method_invocation_return_value (invocation,
return_args = g_variant_new_tuple (&result, 1); g_variant_builder_end (&builder));
g_dbus_method_invocation_return_value (invocation, return_args);
g_variant_unref (return_args);
g_variant_unref (result);
} }
else if (strcmp (method_name, "InvokeAction") == 0) else if (strcmp (method_name, "InvokeAction") == 0)
{ {