| author | David Zeuthen <davidz@redhat.com> | 2009-09-16 15:39:28 (GMT) |
|---|---|---|
| committer | David Zeuthen <davidz@redhat.com> | 2009-09-16 15:39:28 (GMT) |
| commit | 58181774498482f5e0fece51f285d5705508adc4 (patch) (side-by-side diff) | |
| tree | 121fd724a1610f9b06dcf5ce150a4a13134c71d2 | |
| parent | 0eec8eca8693bf709105b17854b6daf1ac9d2203 (diff) | |
| download | eggdbus-master.zip eggdbus-master.tar.gz | |
| -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 |
