From kde-commits Wed Mar 09 19:12:37 2016 From: Weng Xuetian Date: Wed, 09 Mar 2016 19:12:37 +0000 To: kde-commits Subject: [plasma-workspace] applets/systemtray: Backport 70326bdbed9b3e2f74990e170cb400f1e6769c8d to new syst Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=145755077016236 Git commit cdc79a193228df58c80e1cac51626e228d5cca6b by Weng Xuetian. Committed on 09/03/2016 at 19:08. Pushed by xuetianweng into branch 'master'. Backport 70326bdbed9b3e2f74990e170cb400f1e6769c8d to new systemtray Replace QDBusServiceWatcher with QDBusConnectionInterface::serviceOwnerChanged for now. M +13 -8 applets/systemtray/systemtray.cpp M +3 -0 applets/systemtray/systemtray.h http://commits.kde.org/plasma-workspace/cdc79a193228df58c80e1cac51626e228d5= cca6b diff --git a/applets/systemtray/systemtray.cpp b/applets/systemtray/systemt= ray.cpp index b229000..a16c5d9 100644 --- a/applets/systemtray/systemtray.cpp +++ b/applets/systemtray/systemtray.cpp @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include @@ -518,15 +517,21 @@ void SystemTray::serviceNameFetchFinished(QDBusPendin= gCallWatcher* watcher, cons // not just compare them // This makes mpris work, since it wants to match org.mpris.MediaPlaye= r2.dragonplayer // against org.mpris.MediaPlayer2 - QDBusServiceWatcher *serviceWatcher =3D new QDBusServiceWatcher(QStrin= g(), - connection, - QDBusServiceWatcher::Watch= ForOwnerChange, - this); - connect(serviceWatcher, &QDBusServiceWatcher::serviceRegistered, this,= &SystemTray::serviceRegistered); - connect(serviceWatcher, &QDBusServiceWatcher::serviceUnregistered, thi= s, &SystemTray::serviceUnregistered); + // QDBusServiceWatcher is not capable for watching wildcard service ri= ght now + // See: + // https://bugreports.qt.io/browse/QTBUG-51683 + // https://bugreports.qt.io/browse/QTBUG-33829 + connect(connection.interface(), &QDBusConnectionInterface::serviceOwne= rChanged, this, &SystemTray::serviceOwnerChanged); } = - +void SystemTray::serviceOwnerChanged(const QString &serviceName, const QSt= ring &oldOwner, const QString &newOwner) +{ + if (oldOwner.isEmpty()) { + serviceRegistered(serviceName); + } else if (newOwner.isEmpty()) { + serviceUnregistered(serviceName); + } +} = void SystemTray::serviceRegistered(const QString &service) { diff --git a/applets/systemtray/systemtray.h b/applets/systemtray/systemtra= y.h index 68a56ec..e12ea65 100644 --- a/applets/systemtray/systemtray.h +++ b/applets/systemtray/systemtray.h @@ -89,6 +89,9 @@ public: = private Q_SLOTS: void serviceNameFetchFinished(QDBusPendingCallWatcher* watcher, const = QDBusConnection &connection); + void serviceOwnerChanged(const QString &serviceName, const QString &ol= dOwner, const QString &newOwner); + +private: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); =20