public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-plasma/powerdevil/files/, kde-plasma/powerdevil/
Date: Tue, 23 Jun 2020 15:29:54 +0000 (UTC)	[thread overview]
Message-ID: <1592926182.b652780039e7ae6fef23c60bccb0a2d5064e8ca4.asturm@gentoo> (raw)

commit:     b652780039e7ae6fef23c60bccb0a2d5064e8ca4
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 23 15:25:23 2020 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Jun 23 15:29:42 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b6527800

kde-plasma/powerdevil: Fix random inhibition issues

KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=423131
Package-Manager: Portage-2.3.102, Repoman-2.3.23
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 ...owerdevil-5.18.5-fix-powermgmt-inhibition.patch | 80 ++++++++++++++++++++++
 kde-plasma/powerdevil/powerdevil-5.18.5-r1.ebuild  | 69 +++++++++++++++++++
 2 files changed, 149 insertions(+)

diff --git a/kde-plasma/powerdevil/files/powerdevil-5.18.5-fix-powermgmt-inhibition.patch b/kde-plasma/powerdevil/files/powerdevil-5.18.5-fix-powermgmt-inhibition.patch
new file mode 100644
index 00000000000..cb6e27b7a97
--- /dev/null
+++ b/kde-plasma/powerdevil/files/powerdevil-5.18.5-fix-powermgmt-inhibition.patch
@@ -0,0 +1,80 @@
+From d21102cc6c7a4db204a29f376ce5eb316ef57a6e Mon Sep 17 00:00:00 2001
+From: Kai Uwe Broulik <kde@privat.broulik.de>
+Date: Fri, 19 Jun 2020 19:51:06 +0200
+Subject: [PATCH] Watch DBus service right away to discard pending inhibitions
+ reliably
+
+PowerDevil delays applying a power management inhibition by 5 seconds to avoid brief inhibitions
+to e.g. wake up the screen and similar.
+However, when an inhibition was posted and the process then quit, we would then still
+enforce the inhibition as it wasn't explicitly revoked.
+Fix this by always watching the inhibition sender and remove it from pending when the
+service goes away.
+
+BUG: 423131
+FIXED-IN: 5.18.6
+---
+ daemon/powerdevilpolicyagent.cpp | 26 ++++++++++++--------------
+ 1 file changed, 12 insertions(+), 14 deletions(-)
+
+diff --git a/daemon/powerdevilpolicyagent.cpp b/daemon/powerdevilpolicyagent.cpp
+index a7d92dfd..2c2b1152 100644
+--- a/daemon/powerdevilpolicyagent.cpp
++++ b/daemon/powerdevilpolicyagent.cpp
+@@ -513,6 +513,11 @@ uint PolicyAgent::addInhibitionWithExplicitDBusService(uint types, const QString
+ 
+     const int cookie = m_lastCookie; // when the Timer below fires, m_lastCookie might be different already
+ 
++    if (!m_busWatcher.isNull() && !service.isEmpty()) {
++        m_cookieToBusService.insert(cookie, service);
++        m_busWatcher.data()->addWatchedService(service);
++    }
++
+     m_pendingInhibitions.append(cookie);
+ 
+     qCDebug(POWERDEVIL) << "Scheduling inhibition from" << service << appName << "with cookie"
+@@ -532,11 +537,6 @@ uint PolicyAgent::addInhibitionWithExplicitDBusService(uint types, const QString
+ 
+         m_cookieToAppName.insert(cookie, qMakePair<QString, QString>(appName, reason));
+ 
+-        if (!m_busWatcher.isNull() && !service.isEmpty()) {
+-            m_cookieToBusService.insert(cookie, service);
+-            m_busWatcher.data()->addWatchedService(service);
+-        }
+-
+         addInhibitionTypeHelper(cookie, static_cast< PolicyAgent::RequiredPolicies >(types));
+ 
+         Q_EMIT InhibitionsChanged({ {qMakePair(appName, reason)} }, {});
+@@ -596,22 +596,20 @@ void PolicyAgent::ReleaseInhibition(uint cookie)
+ {
+     qCDebug(POWERDEVIL) << "Releasing inhibition with cookie " << cookie;
+ 
+-    if (m_pendingInhibitions.contains(cookie)) {
++    QString service = m_cookieToBusService.take(cookie);
++    if (!m_busWatcher.isNull() && !service.isEmpty() && !m_cookieToBusService.key(service)) {
++        // no cookies from service left
++        m_busWatcher.data()->removeWatchedService(service);
++    }
++
++    if (m_pendingInhibitions.removeOne(cookie)) {
+         qCDebug(POWERDEVIL) << "It was only scheduled for inhibition but not enforced yet, just discarding it";
+-        m_pendingInhibitions.removeOne(cookie);
+         return;
+     }
+ 
+     Q_EMIT InhibitionsChanged(QList<InhibitionInfo>(), { {m_cookieToAppName.value(cookie).first} });
+     m_cookieToAppName.remove(cookie);
+ 
+-
+-    QString service = m_cookieToBusService.take(cookie);
+-    if (!m_busWatcher.isNull() && !service.isEmpty() && !m_cookieToBusService.key(service)) {
+-        // no cookies from service left
+-        m_busWatcher.data()->removeWatchedService(service);
+-    }
+-
+     // Look through all of the inhibition types
+     bool notify = false;
+     if (m_typesToCookie[ChangeProfile].contains(cookie)) {
+-- 
+GitLab
+

diff --git a/kde-plasma/powerdevil/powerdevil-5.18.5-r1.ebuild b/kde-plasma/powerdevil/powerdevil-5.18.5-r1.ebuild
new file mode 100644
index 00000000000..79f0394f5fe
--- /dev/null
+++ b/kde-plasma/powerdevil/powerdevil-5.18.5-r1.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+ECM_HANDBOOK="forceoptional"
+KFMIN=5.66.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=5.12.3
+inherit ecm kde.org
+
+DESCRIPTION="Power management for KDE Plasma Shell"
+HOMEPAGE="https://invent.kde.org/plasma/powerdevil"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+IUSE="brightness-control +wireless"
+
+DEPEND="
+	>=kde-frameworks/kactivities-${KFMIN}:5
+	>=kde-frameworks/kauth-${KFMIN}:5[policykit]
+	>=kde-frameworks/kcompletion-${KFMIN}:5
+	>=kde-frameworks/kconfig-${KFMIN}:5
+	>=kde-frameworks/kconfigwidgets-${KFMIN}:5
+	>=kde-frameworks/kcoreaddons-${KFMIN}:5
+	>=kde-frameworks/kcrash-${KFMIN}:5
+	>=kde-frameworks/kdbusaddons-${KFMIN}:5
+	>=kde-frameworks/kglobalaccel-${KFMIN}:5
+	>=kde-frameworks/ki18n-${KFMIN}:5
+	>=kde-frameworks/kidletime-${KFMIN}:5
+	>=kde-frameworks/kio-${KFMIN}:5
+	>=kde-frameworks/knotifications-${KFMIN}:5
+	>=kde-frameworks/knotifyconfig-${KFMIN}:5
+	>=kde-frameworks/kservice-${KFMIN}:5
+	>=kde-frameworks/kwayland-${KFMIN}:5
+	>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+	>=kde-frameworks/kxmlgui-${KFMIN}:5
+	>=kde-frameworks/solid-${KFMIN}:5
+	>=kde-plasma/libkscreen-${PVCUT}:5
+	>=kde-plasma/libkworkspace-${PVCUT}:5
+	>=dev-qt/qtdbus-${QTMIN}:5
+	>=dev-qt/qtgui-${QTMIN}:5
+	>=dev-qt/qtwidgets-${QTMIN}:5
+	>=dev-qt/qtx11extras-${QTMIN}:5
+	virtual/libudev:=
+	x11-libs/libxcb
+	brightness-control? ( app-misc/ddcutil )
+	wireless? (
+		>=kde-frameworks/bluez-qt-${KFMIN}:5
+		>=kde-frameworks/networkmanager-qt-${KFMIN}:5
+	)
+"
+RDEPEND="${DEPEND}
+	>=kde-plasma/kde-cli-tools-${PVCUT}:5
+	>=sys-power/upower-0.9.23
+"
+
+PATCHES=( "${FILESDIR}/${P}-fix-powermgmt-inhibition.patch" ) # KDE-Bug 423131
+
+src_configure() {
+	local mycmakeargs=(
+		-DHAVE_DDCUTIL=$(usex brightness-control)
+		$(cmake_use_find_package wireless KF5BluezQt)
+		$(cmake_use_find_package wireless KF5NetworkManagerQt)
+	)
+
+	ecm_src_configure
+}


             reply	other threads:[~2020-06-23 15:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-23 15:29 Andreas Sturmlechner [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-11-23 14:59 [gentoo-commits] repo/gentoo:master commit in: kde-plasma/powerdevil/files/, kde-plasma/powerdevil/ Andreas Sturmlechner
2020-08-01 22:57 Andreas Sturmlechner
2016-08-31 12:12 Michael Palimaka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1592926182.b652780039e7ae6fef23c60bccb0a2d5064e8ca4.asturm@gentoo \
    --to=asturm@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox