aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2010-04-19 17:59:53 -0300
committerRenato Filho <renato.filho@openbossa.org>2010-04-22 18:21:21 -0300
commit2c937c64420c414a33f76c8df8f1f72592469576 (patch)
treed47a008a25f78400efbb0ebf87ff03b009c85cfd /libpyside
parent3468ba1efffc17f532ca69007602e87f19245304 (diff)
Fixed QApplication exit order.
SignalManager need be destroyed before QApplication to avoid memory leak. Reviewer: Hugo Parente Lima <hugo.lima@openbossa.org>, Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libpyside')
-rw-r--r--libpyside/globalreceiver.cpp8
-rw-r--r--libpyside/signalmanager.cpp6
-rw-r--r--libpyside/signalmanager.h3
3 files changed, 14 insertions, 3 deletions
diff --git a/libpyside/globalreceiver.cpp b/libpyside/globalreceiver.cpp
index 9fd65b424..e37235d5e 100644
--- a/libpyside/globalreceiver.cpp
+++ b/libpyside/globalreceiver.cpp
@@ -247,10 +247,12 @@ int GlobalReceiver::qt_metacall(QMetaObject::Call call, int id, void** args)
retval = PyObject_CallObject(callback, preparedArgs);
}
- if (!retval)
- qWarning() << "Error calling slot" << m_metaObject.method(id).signature();
- else
+ if (!retval) {
+ qDebug() << "Error calling slot" << m_metaObject.method(id).signature();
+ PyErr_Print();
+ } else {
Py_DECREF(retval);
+ }
return -1;
}
diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp
index 9cdcca1f6..f1b39b946 100644
--- a/libpyside/signalmanager.cpp
+++ b/libpyside/signalmanager.cpp
@@ -221,6 +221,12 @@ SignalManager::SignalManager() : m_d(new SignalManagerPrivate)
TypeResolver::createValueTypeResolver<ushort>("ushort");
}
+void SignalManager::clear()
+{
+ delete m_d;
+ m_d = new SignalManagerPrivate();
+}
+
SignalManager::~SignalManager()
{
delete m_d;
diff --git a/libpyside/signalmanager.h b/libpyside/signalmanager.h
index 02d760ddc..233adf1ff 100644
--- a/libpyside/signalmanager.h
+++ b/libpyside/signalmanager.h
@@ -69,6 +69,9 @@ public:
// Used to discovery if SignalManager was connected with object "destroyed()" signal.
bool hasConnectionWith(const QObject *object);
+
+ // Disconnect all signals managed by Globalreceiver
+ void clear();
private:
struct SignalManagerPrivate;
SignalManagerPrivate* m_d;