[patch] remove DBusGPendingCall

Ross Burton ross at burtonini.com
Thu Jul 7 11:58:44 PDT 2005

On Thu, 2005-07-07 at 13:08 -0400, Colin Walters wrote:
> Ok.  One thing to consider is - shouldn't you be passing the 
> DBusGProxy * into the async callbacks?

Not sure I follow.  This is the generated code:

typedef void (*BookFactory_get_book_reply) (char *OUT_path, GError *error, gpointer userdata);

static void
BookFactory_get_book_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data)
  DBusGAsyncData *data = user_data;
  GError *error = NULL;
  char* OUT_path;
  dbus_g_proxy_end_call (proxy, call, &error, DBUS_TYPE_G_OBJECT_PATH, &OUT_path, G_TYPE_INVALID);
  (*(BookFactory_get_book_reply)data->cb) (OUT_path, error, data->userdata);

static inline gboolean
BookFactory_get_book_async (DBusGProxy *proxy, const char * IN_source, BookFactory_get_book_reply callback, gpointer userdata)
  DBusGAsyncData *stuff;
  stuff = g_new (DBusGAsyncData, 1);
  stuff->cb = callback;
  stuff->userdata = userdata;
  dbus_g_proxy_begin_call (proxy, "getBook", BookFactory_get_book_async_callback, stuff, g_free, G_TYPE_STRING, IN_source, G_TYPE_INVALID);
  return TRUE;

Am I missing something, or did you misinterpret the horrendous code
involved in writing all that?

> About DBusGAsyncData: yeah, I guess you're right.  I had thought we
> could get rid of it but from a quick glance I think using GClosure would
> just add another level of indirection really.

Yes, it would involve everything going into GValue's again for no real

Ross Burton                                 mail: ross at burtonini.com
                                          jabber: ross at burtonini.com
                                     www: http://www.burtonini.com./
 PGP Fingerprint: 1A21 F5B0 D8D0 CFE3 81D4 E25A 2D09 E447 D0B4 33DF

More information about the dbus mailing list