[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