[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/solid/solid/backends/hal
From: Jacopo De Simoi <wilderkde () gmail ! com>
Date: 2010-06-29 16:51:33
Message-ID: 20100629170026.75A87AC8E4 () svn ! kde ! org
[Download RAW message or body]
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 <QtCore/QLocale>
#include <QtCore/QDebug>
#include <QtCore/QProcess>
+#include <QtCore/QTimer>
#include <QtDBus/QDBusConnection>
#include <QtDBus/QDBusInterface>
#include <QtDBus/QDBusReply>
@@ -46,16 +47,24 @@
{
connect(device, SIGNAL(propertyChanged(const QMap<QString,int> &)),
this, SLOT(slotPropertyChanged(const QMap<QString,int> &)));
+ // 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<QString,int> &changes);
void slotDBusReply(const QDBusMessage &reply);
void slotDBusError(const QDBusError &error);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic