[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [plasma-workspace] applets/systemtray: Backport 70326bdbed9b3e2f74990e170cb400f1e6769c8d to new syst
From:       Weng Xuetian <wengxt () gmail ! com>
Date:       2016-03-09 19:12:37
Message-ID: E1adjXB-0005Xr-7C () scm ! kde ! org
[Download RAW message or body]

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/cdc79a193228df58c80e1cac51626e228d5cca6b

diff --git a/applets/systemtray/systemtray.cpp b/applets/systemtray/systemtray.cpp
index b229000..a16c5d9 100644
--- a/applets/systemtray/systemtray.cpp
+++ b/applets/systemtray/systemtray.cpp
@@ -27,7 +27,6 @@
 #include <QDBusConnection>
 #include <QDBusConnectionInterface>
 #include <QDBusPendingCallWatcher>
-#include <QDBusServiceWatcher>
 #include <QMenu>
 #include <QQuickItem>
 #include <QQuickWindow>
@@ -518,15 +517,21 @@ void \
SystemTray::serviceNameFetchFinished(QDBusPendingCallWatcher* watcher, cons  // not \
                just compare them
     // This makes mpris work, since it wants to match \
org.mpris.MediaPlayer2.dragonplayer  // against org.mpris.MediaPlayer2
-    QDBusServiceWatcher *serviceWatcher = new QDBusServiceWatcher(QString(),
-                                                connection,
-                                                \
                QDBusServiceWatcher::WatchForOwnerChange,
-                                                this);
-    connect(serviceWatcher, &QDBusServiceWatcher::serviceRegistered, this, \
                &SystemTray::serviceRegistered);
-    connect(serviceWatcher, &QDBusServiceWatcher::serviceUnregistered, this, \
&SystemTray::serviceUnregistered); +    // QDBusServiceWatcher is not capable for \
watching wildcard service right now +    // See:
+    // https://bugreports.qt.io/browse/QTBUG-51683
+    // https://bugreports.qt.io/browse/QTBUG-33829
+    connect(connection.interface(), &QDBusConnectionInterface::serviceOwnerChanged, \
this, &SystemTray::serviceOwnerChanged);  }
 
-
+void SystemTray::serviceOwnerChanged(const QString &serviceName, const QString \
&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/systemtray.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 &oldOwner, const QString &newOwner); +
+private:
     void serviceRegistered(const QString &service);
     void serviceUnregistered(const QString &service);
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic