[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