diff options
author | David Zeuthen <davidz@redhat.com> | 2009-09-16 11:39:28 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2009-09-16 11:39:28 -0400 |
commit | 58181774498482f5e0fece51f285d5705508adc4 (patch) | |
tree | 121fd724a1610f9b06dcf5ce150a4a13134c71d2 | |
parent | 0eec8eca8693bf709105b17854b6daf1ac9d2203 (diff) |
-rw-r--r-- | src/eggdbus/eggdbusinterfaceproxy.c | 24 |
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 |