[SCM] ktp-kded-integration-module packaging branch, master, updated. debian/15.12.1-2-382-gbd961c2

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:14:42 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-kded-module.git;a=commitdiff;h=b03f8da

The following commit has been merged in the master branch:
commit b03f8da1eb88d2fbeac5f936cf74a7f72612011d
Author: Martin Klapetek <martin.klapetek at gmail.com>
Date:   Tue Dec 11 17:05:38 2012 -0800

    Look async'sly for mpris2 dbus interfaces
    
    QDBusConnection::sessionBus().interface()->registeredServiceNames()
    is sync dbus call, freezing some things while being called.
    This does that call in async way.
    
    REVIEW: 107605
    BUG: 310826
---
 telepathy-mpris.cpp | 23 +++++++++++++++++++++--
 telepathy-mpris.h   |  3 +++
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/telepathy-mpris.cpp b/telepathy-mpris.cpp
index 71b0d24..726cfc8 100644
--- a/telepathy-mpris.cpp
+++ b/telepathy-mpris.cpp
@@ -95,11 +95,30 @@ void TelepathyMPRIS::onPlayerSignalReceived(const QString &interface, const QVar
 
 void TelepathyMPRIS::detectPlayers()
 {
-    QDBusConnectionInterface *i = QDBusConnection::sessionBus().interface();
-    QStringList mprisServices = i->registeredServiceNames().value().filter(QLatin1String("org.mpris.MediaPlayer2"));
+    //get registered service names asynchronously
+    QDBusPendingCall async = QDBusConnection::sessionBus().interface()->asyncCall(QLatin1String("ListNames"));
+    QDBusPendingCallWatcher *callWatcher = new QDBusPendingCallWatcher(async, this);
+    connect(callWatcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
+            this, SLOT(serviceNameFetchFinished(QDBusPendingCallWatcher*)));
+}
+
+void TelepathyMPRIS::serviceNameFetchFinished(QDBusPendingCallWatcher *callWatcher)
+{
+    QDBusPendingReply<QStringList> reply = *callWatcher;
+    if (reply.isError()) {
+        kDebug() << reply.error();
+        return;
+    }
+
+    callWatcher->deleteLater();
+
+    QStringList mprisServices = reply.value();
     QStringList players;
 
     Q_FOREACH (const QString &service, mprisServices) {
+        if (!service.contains(QLatin1String("org.mpris.MediaPlayer2"))) {
+            continue;
+        }
         kDebug() << "Found mpris service:" << service;
         QDBusInterface mprisInterface(service, QLatin1String("/org/mpris/MediaPlayer2"), QLatin1String("org.freedesktop.DBus.Properties"));
         QDBusPendingCall call = mprisInterface.asyncCall(QLatin1String("GetAll"),
diff --git a/telepathy-mpris.h b/telepathy-mpris.h
index 9937139..ccf913e 100644
--- a/telepathy-mpris.h
+++ b/telepathy-mpris.h
@@ -50,6 +50,9 @@ public Q_SLOTS:
 Q_SIGNALS:
     void togglePlaybackActive(bool);
 
+private Q_SLOTS:
+    void serviceNameFetchFinished(QDBusPendingCallWatcher *callWatcher);
+
 private:
     QStringList m_knownPlayers;
     bool m_presenceActivated;

-- 
ktp-kded-integration-module packaging



More information about the pkg-kde-commits mailing list