diff options
author | Weng Xuetian <wengxt@gmail.com> | 2016-03-05 12:23:21 -0800 |
---|---|---|
committer | Weng Xuetian <wengxt@gmail.com> | 2016-04-08 16:16:14 +0000 |
commit | b77ef8a7e6e4104067d52824e29eadc8c66f5929 (patch) | |
tree | 88af4f77c5a7517095705fc7c088b0ad150bb8b9 /src/dbus/qdbusconnection_p.h | |
parent | b0bfe8de68a27de34b9493e7d5263cad1e5823c9 (diff) |
QtDBus: clean up signal hooks and object tree in closeConnection
If a QObject is added or passed as receiver to QDBusConnection::connect()
and it is managed by Q_GLOBAL_STATIC or similar mechanism, it is
possible that when that its destructor is called after the dbus daemon
thread ends. In that case, QObject::destroyed connected via
Qt::BlockingQueuedConnection to QDBusConnectionPrivate will cause dead
lock since the thread is no longer processing events.
Task-number: QTBUG-51648
Change-Id: I1a1810a6d6d0234af0269d5f3fc1f54101bf1547
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/dbus/qdbusconnection_p.h')
-rw-r--r-- | src/dbus/qdbusconnection_p.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index c77daf7ee1..565eb832f2 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -254,6 +254,7 @@ private: const QVector<int> &metaTypes, int slotIdx); SignalHookHash::Iterator removeSignalHookNoLock(SignalHookHash::Iterator it); + void disconnectObjectTree(ObjectTreeNode &node); bool isServiceRegisteredByThread(const QString &serviceName); |