diff options
author | Liang Qi <liang.qi@qt.io> | 2017-05-29 10:06:10 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-05-29 10:54:41 +0200 |
commit | 6a772fd201ac738dc86e71bd82e98f65158e6335 (patch) | |
tree | 674007720f41d27b251bbcffd7a368a93f88eb96 /src/dbus | |
parent | 40206a9f6d7635bb19305d1c8d74908808e3529e (diff) | |
parent | 4c346b6e2bfab976bc9b16275b8382aee38aefa4 (diff) |
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
.qmake.conf
mkspecs/common/msvc-desktop.conf
mkspecs/win32-g++/qmake.conf
mkspecs/win32-icc/qmake.conf
src/platformsupport/fontdatabases/mac/coretext.pri
src/plugins/platforms/cocoa/qcocoawindow.h
src/plugins/platforms/cocoa/qcocoawindow.mm
Change-Id: I74a6f7705c9547ed8bbac7260eb4645543e32655
Diffstat (limited to 'src/dbus')
-rw-r--r-- | src/dbus/qdbusconnection.cpp | 12 | ||||
-rw-r--r-- | src/dbus/qdbusintegrator.cpp | 3 | ||||
-rw-r--r-- | src/dbus/qdbusserver.cpp | 12 |
3 files changed, 21 insertions, 6 deletions
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp index da7557d7e8..75c1e92f96 100644 --- a/src/dbus/qdbusconnection.cpp +++ b/src/dbus/qdbusconnection.cpp @@ -425,7 +425,7 @@ void QDBusConnectionManager::createServer(const QString &address, void *server) */ QDBusConnection::QDBusConnection(const QString &name) { - if (name.isEmpty()) { + if (name.isEmpty() || _q_manager.isDestroyed()) { d = 0; } else { QMutexLocker locker(&_q_manager()->mutex); @@ -490,7 +490,7 @@ QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other) */ QDBusConnection QDBusConnection::connectToBus(BusType type, const QString &name) { - if (!qdbus_loadLibDBus()) { + if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) { QDBusConnectionPrivate *d = 0; return QDBusConnection(d); } @@ -504,7 +504,7 @@ QDBusConnection QDBusConnection::connectToBus(BusType type, const QString &name) QDBusConnection QDBusConnection::connectToBus(const QString &address, const QString &name) { - if (!qdbus_loadLibDBus()) { + if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) { QDBusConnectionPrivate *d = 0; return QDBusConnection(d); } @@ -519,7 +519,7 @@ QDBusConnection QDBusConnection::connectToBus(const QString &address, QDBusConnection QDBusConnection::connectToPeer(const QString &address, const QString &name) { - if (!qdbus_loadLibDBus()) { + if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) { QDBusConnectionPrivate *d = 0; return QDBusConnection(d); } @@ -1174,6 +1174,8 @@ bool QDBusConnection::unregisterService(const QString &serviceName) */ QDBusConnection QDBusConnection::sessionBus() { + if (_q_manager.isDestroyed()) + return QDBusConnection(Q_NULLPTR); return QDBusConnection(_q_manager()->busConnection(SessionBus)); } @@ -1186,6 +1188,8 @@ QDBusConnection QDBusConnection::sessionBus() */ QDBusConnection QDBusConnection::systemBus() { + if (_q_manager.isDestroyed()) + return QDBusConnection(Q_NULLPTR); return QDBusConnection(_q_manager()->busConnection(SystemBus)); } diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index 20186ef9f0..16cd021d0d 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -299,6 +299,9 @@ static void qDBusNewConnection(DBusServer *server, DBusConnection *connection, v Q_ASSERT(connection); Q_ASSERT(data); + if (!QDBusConnectionManager::instance()) + return; + // keep the connection alive q_dbus_connection_ref(connection); QDBusConnectionPrivate *serverConnection = static_cast<QDBusConnectionPrivate *>(data); diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp index 027ce935d6..b1f9be2c2a 100644 --- a/src/dbus/qdbusserver.cpp +++ b/src/dbus/qdbusserver.cpp @@ -68,7 +68,11 @@ QDBusServer::QDBusServer(const QString &address, QObject *parent) if (!qdbus_loadLibDBus()) return; - emit QDBusConnectionManager::instance()->serverRequested(address, this); + QDBusConnectionManager *instance = QDBusConnectionManager::instance(); + if (!instance) + return; + + emit instance->serverRequested(address, this); QObject::connect(d, SIGNAL(newServerConnection(QDBusConnectionPrivate*)), this, SLOT(_q_newConnection(QDBusConnectionPrivate*)), Qt::QueuedConnection); } @@ -93,7 +97,11 @@ QDBusServer::QDBusServer(QObject *parent) return; } - emit QDBusConnectionManager::instance()->serverRequested(address, this); + QDBusConnectionManager *instance = QDBusConnectionManager::instance(); + if (!instance) + return; + + emit instance->serverRequested(address, this); QObject::connect(d, SIGNAL(newServerConnection(QDBusConnectionPrivate*)), this, SLOT(_q_newConnection(QDBusConnectionPrivate*)), Qt::QueuedConnection); } |