diff options
Diffstat (limited to 'src/CommonAPI/DBus/DBusConnection.cpp')
-rw-r--r-- | src/CommonAPI/DBus/DBusConnection.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/CommonAPI/DBus/DBusConnection.cpp b/src/CommonAPI/DBus/DBusConnection.cpp index e0a32e0..68af24c 100644 --- a/src/CommonAPI/DBus/DBusConnection.cpp +++ b/src/CommonAPI/DBus/DBusConnection.cpp @@ -92,15 +92,16 @@ bool DBusConnection::connect(DBusError& dbusError) { void DBusConnection::disconnect() { if (isConnected()) { - stopDispatching_ = true; - if (!dbusSignalMatchRulesMap_.empty()) { dbus_connection_remove_filter(libdbusConnection_, &onLibdbusSignalFilterThunk, this); } + dbus_connection_close(libdbusConnection_); + + stopDispatching_ = true; + dispatchThread_.join(); - dbus_connection_close(libdbusConnection_); dbus_connection_unref(libdbusConnection_); libdbusConnection_ = NULL; @@ -119,8 +120,8 @@ DBusProxyConnection::ConnectionStatusEvent& DBusConnection::getConnectionStatusE const std::shared_ptr<DBusServiceRegistry> DBusConnection::getDBusServiceRegistry() { std::shared_ptr<DBusServiceRegistry> serviceRegistry = dbusServiceRegistry_.lock(); if (!serviceRegistry) { - auto blub = this->shared_from_this(); - serviceRegistry = std::make_shared<DBusServiceRegistry>(blub); + serviceRegistry = std::make_shared<DBusServiceRegistry>(this->shared_from_this()); + serviceRegistry->init(); dbusServiceRegistry_ = serviceRegistry; } |