dbus call into a program -> hangs

Simon McVittie simon.mcvittie at collabora.co.uk
Sat Nov 18 10:05:25 PST 2006


On Sat, 18 Nov 2006 at 13:00:05 +0100, Kacper Wysocki wrote:
> It would
> obviously be better to raise an exception in this case, or include the
> dbus.glib bindings by default together with dbus.service

I'm not going to make dbus.service do the same magic, since I'm adding
support for main loops other than the default GLib mainloop context. The
API will be something along the lines of:

	from dbus import Bus, SessionBus
	from dbus.mainloop.glib import DBusGMainloop
	my_main_context = g_main_context(...)

	# either...
	bus = SessionBus(mainloop=DBusGMainloop(my_main_context))
	# or...
	Bus.set_default_mainloop(DBusGMainloop(my_main_context))
	bus = SessionBus()

	my_main_context.run()

so that you can also do something like:

	from dbus import SessionBus
	from dbus.mainloop.qt import dbus_qt_mainloop
	bus = SessionBus(mainloop=dbus_qt_mainloop)
	QApplication().run()

or:

	from dbus import SessionBus
	from dbus.mainloop.simple import SimpleDBusMainLoop
	mainloop = SimpleDBusMainLoop()	# a simple pure-Python main loop
	bus = SessionBus(mainloop=mainloop)
	mainloop.run()

or even:

	from dbus import SessionBus
	from dbus.mainloop.twisted import TwistedDBusMainLoop
	reactor = (...)
	bus = SessionBus(mainloop=TwistedDBusMainLoop(reactor))
	reactor.run()

I don't currently plan to include the Qt support in dbus-python, to avoid
depending on Qt at build time, but it ought to be possible to have it as an
optional add-on. A simple pure-Python main loop, and Twisted and GLib
support, will ship with dbus-python 0.80 if at all possible; dbus-python
won't depend on Twisted, but including optional Twisted support will let
it integrate with a large number of main loops, including Qt, with minimal
effort.

> While we're on the subject of the python bindings: as in an earlier
> post of mine, the Python-dbus tutorial examples need to be slightly
> fixed to change all references of "bus.bus" to "bus", otherwise these
> examples won't run.

The tutorials will need updating for 0.80 in any case, since the API's
changed (incompatibly, in places), so for the moment I'm concentrating
on getting 0.80 implemented.

	Simon


More information about the dbus mailing list