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>
This commit is contained in:
Renato Filho 2011-04-20 10:35:24 -03:00
commit db9547be72

View file

@ -2108,7 +2108,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);
@ -2122,7 +2123,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);
@ -2146,7 +2146,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>