summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2009-01-13 18:25:51 -0500
committerDavid Zeuthen <davidz@redhat.com>2009-01-13 18:25:51 -0500
commit65bd11e202b1236640b451103bf0acbb75961f78 (patch)
treead0963373e5de9d1b90330b73c4b87af61ece0f0
parent84bb882ba1cfe4e582c7e83ff7aa823d66d01c76 (diff)
fix up types for marshallers0.2
Apparently the type is never checked for generated marshallers, only for built-in GObject marshallers such as VOID__STRING. That's why this bug only surfaced, for SessionAdded(ObjectPath path), when I started using eggdbus to client-side ConsoleKit bindings.
-rw-r--r--src/eggdbus/eggdbusbindingtool.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/eggdbus/eggdbusbindingtool.c b/src/eggdbus/eggdbusbindingtool.c
index 55e45d8..cca1edc 100644
--- a/src/eggdbus/eggdbusbindingtool.c
+++ b/src/eggdbus/eggdbusbindingtool.c
@@ -254,15 +254,26 @@ get_c_marshaller_name_for_args (const EggDBusInterfaceArgInfo *args, guint num_a
break;
case DBUS_TYPE_OBJECT_PATH:
- type_name = "STRING";
+ type_name = "BOXED";
break;
case DBUS_TYPE_SIGNATURE:
- type_name = "STRING";
+ type_name = "BOXED";
break;
case DBUS_TYPE_ARRAY:
- type_name = "BOXED";
+ switch (arg->signature[1])
+ {
+ case DBUS_TYPE_STRING:
+ case DBUS_TYPE_OBJECT_PATH:
+ case DBUS_TYPE_SIGNATURE:
+ type_name = "BOXED";
+ break;
+
+ default:
+ type_name = "OBJECT";
+ break;
+ }
break;
case DBUS_STRUCT_BEGIN_CHAR: