From b3c42d226438fd0fda2db19b92944dec5e226d3f Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 29 Jun 2005 23:52:35 +0000 Subject: 2005-06-29 Colin Walters * dbus/dbus-glib.h: Delete DBUS_TYPE_G_PROXY_ARRAY. Add DBUS_TYPE_G_OBJECT_PATH. * glib/dbus-gvalue.c (dbus_g_value_types_init): Remove marshallers for G_TYPE_OBJECT and DBUS_TYPE_G_PROXY_ARRAY (the latter should be handled more generically). Add DBUS_TYPE_G_OBJECT_PATH. (dbus_g_object_path_get_g_type): New function. (dbus_gtype_from_signature_iter): Map DBUS_TYPE_OBJECT_PATH to DBUS_TYPE_G_OBJECT_PATH by default. (demarshal_proxy): Remove unused name variable. (demarshal_object_path, marshal_object_path): New functions. (demarshal_proxy_array, marshal_proxy_array): Delete. * glib/dbus-binding-tool-glib.c (dbus_g_type_get_c_name): Map DBUS_TYPE_G_OBJECT_PATH to char *. (dbus_g_type_get_lookup_function): Map builtin DBUS_TYPE_G_OBJECT_PATH. * test/glib/test-dbus-glib.c * test/glib/test-service-glib.c (my_object_objpath): Adapt tests to new object path marshalling. --- test/glib/test-dbus-glib.c | 38 +++++++++++++++++++++++--------------- test/glib/test-service-glib.c | 8 ++++---- 2 files changed, 27 insertions(+), 19 deletions(-) (limited to 'test/glib') diff --git a/test/glib/test-dbus-glib.c b/test/glib/test-dbus-glib.c index 178d819f..e8cb74af 100644 --- a/test/glib/test-dbus-glib.c +++ b/test/glib/test-dbus-glib.c @@ -749,11 +749,14 @@ main (int argc, char **argv) { guint val; + char *ret_path; DBusGProxy *ret_proxy; g_print ("Calling (wrapped) objpath\n"); - if (!org_freedesktop_DBus_Tests_MyObject_objpath (proxy, proxy, &ret_proxy, &error)) - lose_gerror ("Failed to complete (wrapped) Objpath call", error); + if (!dbus_g_proxy_call (proxy, "Objpath", &error, + DBUS_TYPE_G_PROXY, proxy, G_TYPE_INVALID, + DBUS_TYPE_G_PROXY, &ret_proxy, G_TYPE_INVALID)) + lose_gerror ("Failed to complete Objpath call", error); if (strcmp ("/org/freedesktop/DBus/Tests/MyTestObject2", dbus_g_proxy_get_path (ret_proxy)) != 0) lose ("(wrapped) objpath call returned unexpected proxy %s", @@ -802,20 +805,25 @@ main (int argc, char **argv) g_print ("Calling objpath again\n"); ret_proxy = NULL; - if (!org_freedesktop_DBus_Tests_MyObject_objpath (proxy, proxy, &ret_proxy, &error)) - lose_gerror ("Failed to complete (wrapped) Objpath call 2", error); - if (strcmp ("/org/freedesktop/DBus/Tests/MyTestObject2", - dbus_g_proxy_get_path (ret_proxy)) != 0) - lose ("(wrapped) objpath call 2 returned unexpected proxy %s", - dbus_g_proxy_get_path (ret_proxy)); - { - const char *iface = dbus_g_proxy_get_interface (ret_proxy); - g_print ("returned proxy has interface \"%s\"\n", - iface ? iface : "(NULL)"); - } - - dbus_g_proxy_set_interface (ret_proxy, "org.freedesktop.DBus.Tests.FooObject"); + if (!dbus_g_proxy_call (proxy, "Objpath", &error, + DBUS_TYPE_G_OBJECT_PATH, + dbus_g_proxy_get_path (proxy), + G_TYPE_INVALID, + DBUS_TYPE_G_OBJECT_PATH, + &ret_path, + G_TYPE_INVALID)) + lose_gerror ("Failed to complete (wrapped) Objpath call 2", error); + if (strcmp ("/org/freedesktop/DBus/Tests/MyTestObject2", ret_path) != 0) + lose ("(wrapped) objpath call 2 returned unexpected path %s", + ret_path); + + ret_proxy = dbus_g_proxy_new_for_name_owner (connection, + "org.freedesktop.DBus.TestSuiteGLibService", + ret_path, + "org.freedesktop.DBus.Tests.FooObject", + &error); + val = 0; if (!org_freedesktop_DBus_Tests_FooObject_get_value (ret_proxy, &val, &error)) lose_gerror ("Failed to complete (wrapped) GetValue call", error); diff --git a/test/glib/test-service-glib.c b/test/glib/test-service-glib.c index 315f1d65..9d5dfcc8 100644 --- a/test/glib/test-service-glib.c +++ b/test/glib/test-service-glib.c @@ -61,7 +61,7 @@ gboolean my_object_many_return (MyObject *obj, guint32 *arg0, char **arg1, gint3 gboolean my_object_recursive1 (MyObject *obj, GArray *array, guint32 *len_ret, GError **error); gboolean my_object_recursive2 (MyObject *obj, guint32 reqlen, GArray **array, GError **error); -gboolean my_object_objpath (MyObject *obj, GObject *in, GObject **arg1, GError **error); +gboolean my_object_objpath (MyObject *obj, const char *in, char **arg1, GError **error); gboolean my_object_stringify (MyObject *obj, GValue *value, char **ret, GError **error); gboolean my_object_unstringify (MyObject *obj, const char *str, GValue *value, GError **error); @@ -362,9 +362,9 @@ my_object_many_uppercase (MyObject *obj, const char * const *in, char ***out, GE } gboolean -my_object_objpath (MyObject *obj, GObject *incoming, GObject **outgoing, GError **error) +my_object_objpath (MyObject *obj, const char *incoming, char **outgoing, GError **error) { - if ((GObject*) obj != incoming) + if (strcmp (incoming, "/org/freedesktop/DBus/Tests/MyTestObject")) { g_set_error (error, MY_OBJECT_ERROR, @@ -372,7 +372,7 @@ my_object_objpath (MyObject *obj, GObject *incoming, GObject **outgoing, GError "invalid incoming object"); return FALSE; } - *outgoing = g_object_ref (obj2); + *outgoing = g_strdup ("/org/freedesktop/DBus/Tests/MyTestObject2"); return TRUE; } -- cgit