forked from pool/powerdevil6
Accepting request 1189503 from KDE:Frameworks
OBS-URL: https://build.opensuse.org/request/show/1189503 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/powerdevil6?expand=0&rev=11
This commit is contained in:
commit
0b41a6c8cd
@ -0,0 +1,53 @@
|
||||
From 8c1686c9e97edb9a06e06e2f41cfe5351cef7986 Mon Sep 17 00:00:00 2001
|
||||
From: Jakob Petsovits <jpetso@petsovits.com>
|
||||
Date: Thu, 18 Jul 2024 17:14:06 +0000
|
||||
Subject: [PATCH] daemon: Don't leave dangling Action pointers in idle-time
|
||||
containers
|
||||
|
||||
If we delete the Action but don't clean up related map/set elements,
|
||||
the powerdevil daemon can crash e.g. in Core::onResumingFromIdle()
|
||||
and Core::onKIdleTimeoutReached().
|
||||
|
||||
This has been an issue since commit 584cfdf0 (or d91bc62f on 6.1)
|
||||
which made it possible for already-created actions to get deleted
|
||||
again at a later time.
|
||||
|
||||
BUG: 490356
|
||||
BUG: 490421
|
||||
|
||||
|
||||
(cherry picked from commit 7a929fa01ed036f60c5a15c72416b4e40eb03160)
|
||||
|
||||
Co-authored-by: Jakob Petsovits <jpetso@petsovits.com>
|
||||
---
|
||||
daemon/powerdevilcore.cpp | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/daemon/powerdevilcore.cpp b/daemon/powerdevilcore.cpp
|
||||
index 915ca0ad..838b5c05 100644
|
||||
--- a/daemon/powerdevilcore.cpp
|
||||
+++ b/daemon/powerdevilcore.cpp
|
||||
@@ -224,10 +224,16 @@ void Core::refreshActions()
|
||||
}
|
||||
|
||||
// Remove now-unsupported actions
|
||||
- std::erase_if(m_actionPool, [](const auto &pair) {
|
||||
- const auto &[name, action] = pair;
|
||||
- return !action->isSupported();
|
||||
- });
|
||||
+ for (auto it = m_actionPool.begin(); it != m_actionPool.end();) {
|
||||
+ Action *action = it->second.get();
|
||||
+ if (!action->isSupported()) {
|
||||
+ m_registeredActionTimeouts.remove(action);
|
||||
+ m_pendingResumeFromIdleActions.remove(action);
|
||||
+ it = m_actionPool.erase(it);
|
||||
+ } else {
|
||||
+ ++it;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
bool Core::isActionSupported(const QString &actionName)
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 24 17:23:00 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Add patch to fix crash on display wake up (kde#490356, kde#490421):
|
||||
* 0001-daemon-Don-t-leave-dangling-Action-pointers-in-idle-.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 16 13:41:23 UTC 2024 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
|
@ -36,6 +36,8 @@ Source: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{ver
|
||||
Source1: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig
|
||||
Source2: plasma.keyring
|
||||
%endif
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: 0001-daemon-Don-t-leave-dangling-Action-pointers-in-idle-.patch
|
||||
BuildRequires: kf6-extra-cmake-modules >= %{kf6_version}
|
||||
# Needed by FindLibcap.cmake
|
||||
BuildRequires: libcap-progs
|
||||
|
Loading…
x
Reference in New Issue
Block a user