dbus glib win32

zaryad_mail at adelphia.net zaryad_mail at adelphia.net
Tue Dec 19 12:18:23 PST 2006


Hello folks,

I've built the latest windbus (0.94) with mingw, as well as the glib 
bindings (0.72). The bindings are supposedly unsupported on win32 yet 
after some tweaking, it builds. I made one change in 
dbus-gmain.c->connection_setup_add_watch:

-  channel = g_io_channel_unix_new ( dbus_watch_get_fd (watch));
+ channel = g_io_channel_win32_new_socket( dbus_watch_get_fd (watch));

Due to the former not being able to correctly disambiguate whether the 
provided descriptor is a file or socket, subsequently returning a null 
GIOChannel. Glib built for win32 has this function in giowin32.c, in 
addition to the socket-specific implementation, so I chose to use the 
socket-specific one just for testing. (since it is known that descriptor 
is a wsa socket)

With this change, I observe the following:

Server test is able to connect to session bus, register an object, 
request name and go into gmainloop.
Client test fails to dispatch a method call on the server, infact 
monitoring the server process with DBUS_VERBOSE=1, it appears
that once gmainloop is invoked, no further changes occur even after a 
client requests a method call. (not picking up data on the wire)

To determine whether this was fault of windbus, I tried Matthew 
Johnson's java bindings, which worked ok.

Furthermore, java server object is functional to glib clients, as well 
as java clients. However, glib server object does not work either with 
java clients or glib clients.

 From this I conclude that something is amiss in the glib server code, 
for this I ask some of you to give me hints/pointers so I may better 
spend my time finding the culprit.

(I presume that this may be a stall in the pull phase, somewhere the 
socket code just faults and doesn't read anything off the wire, since 
its clear windbus is indeed sending those requests. Java server code is 
able to read those requests, but java code uses a threaded approach, 
thus not exercising the same pathways as the glib dbus bindings)

I'm new to this and am determined to fix this, glib provides nice 
bindings, IMO it would be nice if it ran on win32 as well.

Thanks alot for you help.


More information about the dbus mailing list