mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
kde-frameworks/knotifications: Re-add missing patch
Reported-by: Latrina in #gentoo-kde Package-Manager: Portage-2.3.8, Repoman-2.3.3
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
From 1c97e1d9741fd15962474f47932dd09728dae76b Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <kde@davidedmundson.co.uk>
|
||||
Date: Fri, 28 Jul 2017 13:04:50 +0100
|
||||
Subject: [PATCH] Don't block starting notification service
|
||||
|
||||
Summary:
|
||||
We don't need to manually start the DBus service.
|
||||
It blocks the calling app, and dbusServiceExists means that we will
|
||||
always end up going the DBus route over a popup anyway, so it won't
|
||||
do anything useful.
|
||||
|
||||
The service (in the plasma case plasma-wait-for-name) will be started
|
||||
automatically when we actually send the notification.
|
||||
|
||||
Also fix d-dbusServiceExists being cleared to false when the first
|
||||
service owner exits.
|
||||
|
||||
BUG: 382444
|
||||
|
||||
Subscribers: #frameworks
|
||||
|
||||
Tags: #frameworks
|
||||
|
||||
Differential Revision: https://phabricator.kde.org/D6963
|
||||
---
|
||||
src/notifybypopup.cpp | 28 +++++++++++-----------------
|
||||
1 file changed, 11 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/src/notifybypopup.cpp b/src/notifybypopup.cpp
|
||||
index 735d52b..4f244e1 100644
|
||||
--- a/src/notifybypopup.cpp
|
||||
+++ b/src/notifybypopup.cpp
|
||||
@@ -109,6 +109,9 @@ public:
|
||||
* Specifies if DBus Notifications interface exists on session bus
|
||||
*/
|
||||
bool dbusServiceExists;
|
||||
+
|
||||
+ bool dbusServiceActivatable;
|
||||
+
|
||||
/**
|
||||
* DBus notification daemon capabilities cache.
|
||||
* Do not use this variable. Use #popupServerCapabilities() instead.
|
||||
@@ -161,6 +164,7 @@ NotifyByPopup::NotifyByPopup(QObject *parent)
|
||||
{
|
||||
d->animationTimer = 0;
|
||||
d->dbusServiceExists = false;
|
||||
+ d->dbusServiceActivatable = false;
|
||||
d->dbusServiceCapCacheDirty = true;
|
||||
d->nextPosition = -1;
|
||||
|
||||
@@ -180,32 +184,20 @@ NotifyByPopup::NotifyByPopup(QObject *parent)
|
||||
connect(watcher, SIGNAL(serviceOwnerChanged(QString,QString,QString)),
|
||||
SLOT(onServiceOwnerChanged(QString,QString,QString)));
|
||||
|
||||
+#ifndef Q_WS_WIN
|
||||
if (!d->dbusServiceExists) {
|
||||
- bool startfdo = false;
|
||||
-#ifdef Q_WS_WIN
|
||||
- startfdo = true;
|
||||
-#else
|
||||
QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"),
|
||||
QStringLiteral("/org/freedesktop/DBus"),
|
||||
QStringLiteral("org.freedesktop.DBus"),
|
||||
QStringLiteral("ListActivatableNames"));
|
||||
-
|
||||
- // FIXME - this should be async
|
||||
QDBusReply<QStringList> reply = QDBusConnection::sessionBus().call(message);
|
||||
if (reply.isValid() && reply.value().contains(dbusServiceName)) {
|
||||
- startfdo = true;
|
||||
- // We need to set d->dbusServiceExists to true because dbus might be too slow
|
||||
- // starting the service and the first call to NotifyByPopup::notify
|
||||
- // might not have had the service up, by setting this to true we
|
||||
- // guarantee it will still go through dbus and dbus will do the correct
|
||||
- // thing and wait for the service to go up
|
||||
+ d->dbusServiceActivatable = true;
|
||||
+ //if the service is activatable, we can assume it exists even if it is not currently running
|
||||
d->dbusServiceExists = true;
|
||||
}
|
||||
-#endif
|
||||
- if (startfdo) {
|
||||
- QDBusConnection::sessionBus().interface()->startService(dbusServiceName);
|
||||
- }
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -439,7 +431,9 @@ void NotifyByPopup::onServiceOwnerChanged(const QString &serviceName, const QStr
|
||||
|
||||
if (newOwner.isEmpty()) {
|
||||
d->notificationQueue.clear();
|
||||
- d->dbusServiceExists = false;
|
||||
+ if (!d->dbusServiceActivatable) {
|
||||
+ d->dbusServiceExists = false;
|
||||
+ }
|
||||
} else if (oldOwner.isEmpty()) {
|
||||
d->dbusServiceExists = true;
|
||||
|
||||
--
|
||||
2.13.5
|
||||
|
||||
Reference in New Issue
Block a user