mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-29 12:45:40 +08:00
Properly cleanup open QDBusConnection's
Everytime you connect to DBus, the connection stays open until it is manually disconnected or cleaned up by the QCoreApplication destructor. In case of xbus, ~QCoreApplication is not necessarily be called and the connection not cleaned up. Hence do it manually. refs #615
This commit is contained in:
@@ -47,11 +47,11 @@ namespace BlackMisc
|
||||
break;
|
||||
case SERVERMODE_SYSTEMBUS:
|
||||
{
|
||||
QDBusConnection connection = QDBusConnection::systemBus();
|
||||
QDBusConnection connection = QDBusConnection::connectToBus(QDBusConnection::SystemBus, coreServiceName());
|
||||
if (!connection.isConnected())
|
||||
{
|
||||
launchDBusDaemon();
|
||||
connection = QDBusConnection::systemBus();
|
||||
connection = QDBusConnection::connectToBus(QDBusConnection::SystemBus, coreServiceName());
|
||||
}
|
||||
|
||||
if (!connection.registerService(service))
|
||||
@@ -90,6 +90,7 @@ namespace BlackMisc
|
||||
CDBusServer::~CDBusServer()
|
||||
{
|
||||
this->removeAllObjects();
|
||||
QDBusConnection::disconnectFromBus(coreServiceName());
|
||||
}
|
||||
|
||||
const QString &CDBusServer::coreServiceName()
|
||||
@@ -392,13 +393,19 @@ namespace BlackMisc
|
||||
}
|
||||
else
|
||||
{
|
||||
QDBusConnection connection(dbusAddress == systemBusAddress() ? QDBusConnection::systemBus() : QDBusConnection::connectToBus(QDBusConnection::SessionBus, coreServiceName()));
|
||||
QString name = coreServiceName();
|
||||
QDBusConnection connection = dbusAddress == systemBusAddress() ?
|
||||
QDBusConnection::connectToBus(QDBusConnection::SystemBus, name) :
|
||||
QDBusConnection::connectToBus(QDBusConnection::SessionBus, name);
|
||||
|
||||
// todo: further checks would need to go here
|
||||
// failing session bus not detected yet
|
||||
|
||||
o_message = connection.lastError().message();
|
||||
return connection.isConnected();
|
||||
bool isConnected = connection.isConnected();
|
||||
|
||||
QDBusConnection::disconnectFromBus(name);
|
||||
return isConnected;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user