On 4/25/07, <b class="gmail_sendername">Phil Thompson</b> &lt;<a href="mailto:phil@riverbankcomputing.co.uk">phil@riverbankcomputing.co.uk</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wednesday 25 April 2007 3:44 pm, Ingmar Steen wrote:<br>&gt; Hi,<br>&gt;<br>&gt; I&#39;m trying to use the new PyQt4 dbus mainloop, but it crashes with an<br>&gt; assertion error when I try to get an object from the bus. I&#39;m using Sip
<br>&gt; 4.6, PyQt4.2, Qt 4.2.3, Python 2.5.1, DBus 1.0.2 and dbus-python 0.80.1. Am<br>&gt; I doing something fundamentally insane or wrong?<br>&gt;<br>&gt; If I remove the QDBusQtMainLoop(set_as_default=True) line, it works just
<br>&gt; fine. The assertion also happens if app.exec_() and get the bus object from<br>&gt; a QTimer event.<br>&gt;<br>&gt; Anybody got any ideas?<br><br>You could try a later version of dbus-python.<br><br>Can you produce a glib version? It that does the same then at least it&#39;s not a
<br>PyQt problem.<br><br>Phil</blockquote><div><br>I upgraded dbus-python to 0.80.2 (even rebuilt python, sip and pyqt4 from scratch) with the same result.<br>
<br>
A glib version of the same test application works as expected (as do more complex glib-python-dbus apps).<br></div><br>I&#39;ve also reviewed the package sources of my distribution&#39;s Qt4 and DBus packages... No fancy patches or other magic there. The only thing I can personally think of is that Qt4 is compiled with glib mainloop support (which sort of works, I can use the dbus glib mainloop in PyQt4 apps, but 
QCoreApplication.exec_() never quits).<br><br></div>Ingmar<br><br><br>test_glib.py:<br>from dbus.mainloop.glib import DBusGMainLoop<br>import dbus, sys, gobject<br>loop = gobject.MainLoop()<br>DBusGMainLoop(set_as_default = True)
<br>print &#39;getting bus&#39;; bus = dbus.SystemBus()<br>print &#39;getting obj&#39;; obj = bus.get_object(&#39;org.bluez&#39;, &#39;/org/bluez&#39;)<br>print &#39;done&#39;<br><br>output:<br>getting bus<br>getting obj<br>
done<br>