summaryrefslogtreecommitdiffstats
path: root/src/dbus
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/qdbusconnection.cpp12
-rw-r--r--src/dbus/qdbusintegrator.cpp3
-rw-r--r--src/dbus/qdbusserver.cpp12
3 files changed, 21 insertions, 6 deletions
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index c869707d6d..8fae11c8cd 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -426,7 +426,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);
@@ -491,7 +491,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);
}
@@ -505,7 +505,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);
}
@@ -520,7 +520,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);
}
@@ -1175,6 +1175,8 @@ bool QDBusConnection::unregisterService(const QString &serviceName)
*/
QDBusConnection QDBusConnection::sessionBus()
{
+ if (_q_manager.isDestroyed())
+ return QDBusConnection(Q_NULLPTR);
return QDBusConnection(_q_manager()->busConnection(SessionBus));
}
@@ -1187,6 +1189,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 2140f7cd82..e1e588b850 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);
}