From kde-commits Tue Jun 29 16:51:33 2010 From: Jacopo De Simoi Date: Tue, 29 Jun 2010 16:51:33 +0000 To: kde-commits Subject: KDE/kdelibs/solid/solid/backends/hal Message-Id: <20100629170026.75A87AC8E4 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=127783029316189 SVN commit 1144335 by jacopods: performance++ Do not connect to dbus signals right away, rather wait for the next event cycle, so that this won't happen on hotpaths (e.g. predicate checking) M +13 -4 halstorageaccess.cpp M +1 -0 halstorageaccess.h --- trunk/KDE/kdelibs/solid/solid/backends/hal/halstorageaccess.cpp #1144334:1144335 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -46,16 +47,24 @@ { connect(device, SIGNAL(propertyChanged(const QMap &)), this, SLOT(slotPropertyChanged(const QMap &))); + // Delay connecting to DBus signals to avoid the related time penalty + // in hot paths such as predicate matching + QTimer::singleShot(0, this, SLOT(connectDBusSignals())); +} + +StorageAccess::~StorageAccess() +{ + +} + +void StorageAccess::connectDBusSignals() +{ m_device->connectActionSignal("setupRequested", this, SLOT(slotSetupRequested())); m_device->connectActionSignal("teardownRequested", this, SLOT(slotTeardownRequested())); m_device->connectActionSignal("setupDone", this, SLOT(slotSetupDone(int, QDBusVariant, const QString&))); m_device->connectActionSignal("teardownDone", this, SLOT(slotTeardownDone(int, QDBusVariant, const QString&))); m_device->connectActionSignal("ejectDone", this, SLOT(slotEjectDone(int, QDBusVariant, const QString&))); -} -StorageAccess::~StorageAccess() -{ - } void StorageAccess::slotSetupDone(int error, QDBusVariant errorData, const QString& udi) --- trunk/KDE/kdelibs/solid/solid/backends/hal/halstorageaccess.h #1144334:1144335 @@ -57,6 +57,7 @@ void teardownRequested(const QString &udi); private Q_SLOTS: + void connectDBusSignals(); void slotPropertyChanged(const QMap &changes); void slotDBusReply(const QDBusMessage &reply); void slotDBusError(const QDBusError &error);