diff options
author | Michael Palimaka <kensington@gentoo.org> | 2017-08-30 23:12:27 +1000 |
---|---|---|
committer | Michael Palimaka <kensington@gentoo.org> | 2017-08-30 23:12:54 +1000 |
commit | b868d154f825023aa7cab38852336e2c30d6d18e (patch) | |
tree | 4d13cddad4e8f47aab50194b833a60eb95328a9d /kde-frameworks/knotifications | |
parent | net-analyzer/wireshark: Update GNOME icon cache (bug #629346). (diff) | |
download | gentoo-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')
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 +} |