summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Palimaka <kensington@gentoo.org>2017-08-30 23:12:27 +1000
committerMichael Palimaka <kensington@gentoo.org>2017-08-30 23:12:54 +1000
commitb868d154f825023aa7cab38852336e2c30d6d18e (patch)
tree4d13cddad4e8f47aab50194b833a60eb95328a9d /kde-frameworks/knotifications
parentnet-analyzer/wireshark: Update GNOME icon cache (bug #629346). (diff)
downloadgentoo-b868d154f825023aa7cab38852336e2c30d6d18e.tar.gz
gentoo-b868d154f825023aa7cab38852336e2c30d6d18e.tar.bz2
gentoo-b868d154f825023aa7cab38852336e2c30d6d18e.zip
kde-frameworks/knotifications: backport patch from upstream to resolve notification blocking issue
Gentoo-bug: 622174 Package-Manager: Portage-2.3.6, Repoman-2.3.3
Diffstat (limited to 'kde-frameworks/knotifications')
-rw-r--r--kde-frameworks/knotifications/files/knotifications-5.34.0-no-block-notification.patch101
-rw-r--r--kde-frameworks/knotifications/knotifications-5.34.0-r1.ebuild47
-rw-r--r--kde-frameworks/knotifications/knotifications-5.37.0-r1.ebuild46
3 files changed, 194 insertions, 0 deletions
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 <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
+
diff --git a/kde-frameworks/knotifications/knotifications-5.34.0-r1.ebuild b/kde-frameworks/knotifications/knotifications-5.34.0-r1.ebuild
new file mode 100644
index 000000000000..5947e9e2b6ed
--- /dev/null
+++ b/kde-frameworks/knotifications/knotifications-5.34.0-r1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_TEST="false"
+inherit kde5
+
+DESCRIPTION="Framework for notifying the user of an event"
+LICENSE="LGPL-2.1+"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="dbus nls speech X"
+
+# drop qtgui subslot operator when QT_MINIMAL >= 5.7.0
+RDEPEND="
+ $(add_frameworks_dep kcodecs)
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtgui '' '' '5=')
+ $(add_qt_dep qtwidgets)
+ media-libs/phonon[qt5]
+ dbus? ( dev-libs/libdbusmenu-qt[qt5] )
+ speech? ( $(add_qt_dep qtspeech) )
+ X? (
+ $(add_qt_dep qtx11extras)
+ x11-libs/libX11
+ x11-libs/libXtst
+ )
+"
+DEPEND="${RDEPEND}
+ nls? ( $(add_qt_dep linguist-tools) )
+ X? ( x11-proto/xproto )
+"
+
+PATCHES=( "${FILESDIR}/${P}-no-block-notification.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_find_package dbus dbusmenu-qt5)
+ $(cmake-utils_use_find_package speech Qt5TextToSpeech)
+ $(cmake-utils_use_find_package X X11)
+ )
+
+ kde5_src_configure
+}
diff --git a/kde-frameworks/knotifications/knotifications-5.37.0-r1.ebuild b/kde-frameworks/knotifications/knotifications-5.37.0-r1.ebuild
new file mode 100644
index 000000000000..96d9f5e8f93b
--- /dev/null
+++ b/kde-frameworks/knotifications/knotifications-5.37.0-r1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_TEST="false"
+inherit kde5
+
+DESCRIPTION="Framework for notifying the user of an event"
+LICENSE="LGPL-2.1+"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="dbus nls speech X"
+
+RDEPEND="
+ $(add_frameworks_dep kcodecs)
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtwidgets)
+ media-libs/phonon[qt5]
+ dbus? ( dev-libs/libdbusmenu-qt[qt5] )
+ speech? ( $(add_qt_dep qtspeech) )
+ X? (
+ $(add_qt_dep qtx11extras)
+ x11-libs/libX11
+ x11-libs/libXtst
+ )
+"
+DEPEND="${RDEPEND}
+ nls? ( $(add_qt_dep linguist-tools) )
+ X? ( x11-proto/xproto )
+"
+
+PATCHES=( "${FILESDIR}/${PN}-5.34.0-no-block-notification.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_find_package dbus dbusmenu-qt5)
+ $(cmake-utils_use_find_package speech Qt5TextToSpeech)
+ $(cmake-utils_use_find_package X X11)
+ )
+
+ kde5_src_configure
+}