aboutsummaryrefslogtreecommitdiffstats
path: root/PySide
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-04-20 10:35:24 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:13 -0300
commit0512a3f98f1bc449214b29c307f40bb03a19ae26 (patch)
tree6072cae4c8e7507b48f034a8ecd9ac7551490a20 /PySide
parent3bc3257c8ba8b0381cb7765fbd847925e83aec79 (diff)
Fixed reference leak on PySideSignal for QTimer.SingleShot
Fixes bug #815. Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Hugo Parente Lima <hugo.pl@gmail.com>
Diffstat (limited to 'PySide')
-rw-r--r--PySide/QtCore/typesystem_core.xml9
1 files changed, 6 insertions, 3 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml
index 4817df312..539544636 100644
--- a/PySide/QtCore/typesystem_core.xml
+++ b/PySide/QtCore/typesystem_core.xml
@@ -2100,7 +2100,8 @@
%PYARG_2,
%3)
);
- Shiboken::Object::invalidate((SbkObject*)pyTimer);
+ Shiboken::Object::releaseOwnership((SbkObject*)pyTimer);
+ Py_XDECREF(pyTimer);
timer->setSingleShot(true);
timer->connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
timer->start(%1);
@@ -2114,7 +2115,6 @@
Shiboken::SbkType&lt;QTimer>()->tp_init(pyTimer, emptyTuple, 0);
QTimer* timer = %CONVERTTOCPP[QTimer*](pyTimer);
timer->setSingleShot(true);
- timer->connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()));
if (PyObject_TypeCheck(%2, &amp;PySideSignalInstanceType)) {
PySideSignalInstance* signalInstance = reinterpret_cast&lt;PySideSignalInstance*&gt;(%2);
@@ -2138,7 +2138,10 @@
pyargs[1])
);
}
- Shiboken::Object::invalidate((SbkObject*)pyTimer);
+
+ timer->connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater()), Qt::DirectConnection);
+ Shiboken::Object::releaseOwnership((SbkObject*)pyTimer);
+ Py_XDECREF(pyTimer);
timer->start(%1);
</inject-code>
</add-function>