summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2009-09-16 11:39:28 -0400
committerDavid Zeuthen <davidz@redhat.com>2009-09-16 11:39:28 -0400
commit58181774498482f5e0fece51f285d5705508adc4 (patch)
tree121fd724a1610f9b06dcf5ce150a4a13134c71d2
parent0eec8eca8693bf709105b17854b6daf1ac9d2203 (diff)
Properly handle flags/enums propertiesHEAD0.6master
-rw-r--r--src/eggdbus/eggdbusinterfaceproxy.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/eggdbus/eggdbusinterfaceproxy.c b/src/eggdbus/eggdbusinterfaceproxy.c
index 5774e23..ba37757 100644
--- a/src/eggdbus/eggdbusinterfaceproxy.c
+++ b/src/eggdbus/eggdbusinterfaceproxy.c
@@ -245,7 +245,29 @@ egg_dbus_interface_proxy_get_property (GObject *object,
}
else
{
- g_value_copy (egg_dbus_variant_get_gvalue (variant), value);
+ const GValue *variant_value;
+
+ variant_value = egg_dbus_variant_get_gvalue (variant);
+
+ if (G_VALUE_TYPE (variant_value) == G_TYPE_UINT)
+ {
+ if (G_TYPE_IS_FLAGS (G_VALUE_TYPE (value)))
+ {
+ g_value_set_flags (value, g_value_get_uint (variant_value));
+ }
+ else if (G_TYPE_IS_ENUM (G_VALUE_TYPE (value)))
+ {
+ g_value_set_enum (value, g_value_get_uint (variant_value));
+ }
+ else
+ {
+ g_value_copy (variant_value, value);
+ }
+ }
+ else
+ {
+ g_value_copy (variant_value, value);
+ }
}
}
else