From dee630a2584918c7ceb5ebf946ba3c4b161c4ea2 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Wed, 13 Sep 2017 01:02:56 +0200 Subject: kde-frameworks/knotifications: Re-add missing patch Reported-by: Latrina in #gentoo-kde Package-Manager: Portage-2.3.8, Repoman-2.3.3 --- ...otifications-5.34.0-no-block-notification.patch | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 kde-frameworks/knotifications/files/knotifications-5.34.0-no-block-notification.patch (limited to 'kde-frameworks/knotifications') diff --git a/kde-frameworks/knotifications/files/knotifications-5.34.0-no-block-notification.patch b/kde-frameworks/knotifications/files/knotifications-5.34.0-no-block-notification.patch new file mode 100644 index 000000000000..2d1ae95af5fb --- /dev/null +++ b/kde-frameworks/knotifications/files/knotifications-5.34.0-no-block-notification.patch @@ -0,0 +1,101 @@ +From 1c97e1d9741fd15962474f47932dd09728dae76b Mon Sep 17 00:00:00 2001 +From: David Edmundson +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 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 + -- cgit v1.2.3-65-gdbad