On Thu, 29 Oct 2009 00:37:14 +0100, Giovanni Bajo <[email protected]>
wrote:
> On Wed, 28 Oct 2009 22:14:41 +0000, Phil Thompson
> <[email protected]> wrote:
>> On Wed, 28 Oct 2009 19:35:44 +0100, Giovanni Bajo <[email protected]>
>> wrote:
>>> Hi Phil,
>>> 
>>> I'm testing PyQt 4.6.1 and SIP 4.9.1 over my small regression testsuite
>>> (it contains testcases for bugs that I have reported to you over the
>>> years and that you have fixed).
>>> 
>>> There are 4 testcases failing with the new SIP/PyQt pair, but they all
>>> seem related to the same issue. Try this one:
>>> 
>>> =====================================================================
>>> #!/usr/bin/env python
>>> from PyQt4.Qt import *
>>> 
>>> a = QObject(None)
>>> 
>>> called = []
>>> def myslot():
>>>     called.append(True)
>>> 
>>> QObject.connect(a, SIGNAL("destroyed()"), a, SIGNAL("QUIT()"))
>>> QObject.connect(a, SIGNAL("destroyed()"), myslot)
>>> QObject.connect(a, SIGNAL("QUIT()"), myslot)
>>> 
>>> del a
>>> assert len(called) == 2, len(called)
>>> =====================================================================
>>> 
>>> I would say this should work, right?
>> 
>> Fixed in tonight's PyQt snapshot (and test added to the test suite).
> 
> Can you send me the patch please?

Attached.

Phil
--- PyQt/trunk/4/qpy/QtCore/qpycore_pyqtproxy.cpp (revision 2662)
+++ PyQt/trunk/4/qpy/QtCore/qpycore_pyqtproxy.cpp (revision 2674)
@@ -217,7 +217,10 @@
     // by making the proxy a child of the transmitter.  This doesn't work as
     // expected because QWidget destroys its children before emitting the
-    // destroyed signal.)
+    // destroyed signal.)  We use a queued connection in case the proxy is also
+    // connected to the same signal and we want to make sure it has a chance
+    // to invoke the slot before being destroyed.
     if (qtx)
-        connect(qtx, SIGNAL(destroyed(QObject *)), SLOT(disable()));
+        connect(qtx, SIGNAL(destroyed(QObject *)), SLOT(disable()),
+                Qt::QueuedConnection);
 }
 
_______________________________________________
PyQt mailing list    [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to