From ced9a8b6e2821a5f24f20788138b75054b766c46 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sat, 25 Dec 2010 14:25:05 +0000 Subject: [PATCH] Test we can connect to udisks before connecting signals and reset the pointer of the interface. Thanks mail@holger-mense.de. --- src/devices/devicekitlister.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/devices/devicekitlister.cpp b/src/devices/devicekitlister.cpp index f8a141b26..b587efe1b 100644 --- a/src/devices/devicekitlister.cpp +++ b/src/devices/devicekitlister.cpp @@ -47,20 +47,21 @@ void DeviceKitLister::Init() { OrgFreedesktopUDisksInterface::staticInterfaceName(), "/org/freedesktop/UDisks", QDBusConnection::systemBus())); - // Listen for changes - connect(interface_.get(), SIGNAL(DeviceAdded(QDBusObjectPath)), SLOT(DBusDeviceAdded(QDBusObjectPath))); - connect(interface_.get(), SIGNAL(DeviceRemoved(QDBusObjectPath)), SLOT(DBusDeviceRemoved(QDBusObjectPath))); - connect(interface_.get(), SIGNAL(DeviceChanged(QDBusObjectPath)), SLOT(DBusDeviceChanged(QDBusObjectPath))); - // Get all the devices currently attached QDBusPendingReply > reply = interface_->EnumerateDevices(); reply.waitForFinished(); if (!reply.isValid()) { qWarning() << "Error enumerating DeviceKit-disks devices:" << reply.error().name() << reply.error().message(); + interface_.reset(); return; } + // Listen for changes + connect(interface_.get(), SIGNAL(DeviceAdded(QDBusObjectPath)), SLOT(DBusDeviceAdded(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceRemoved(QDBusObjectPath)), SLOT(DBusDeviceRemoved(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceChanged(QDBusObjectPath)), SLOT(DBusDeviceChanged(QDBusObjectPath))); + // Get information about each one QMap device_data; foreach (const QDBusObjectPath& path, reply.value()) {