summaryrefslogtreecommitdiff
path: root/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch')
-rw-r--r--kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch93
1 files changed, 0 insertions, 93 deletions
diff --git a/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch b/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch
deleted file mode 100644
index 4defd5ae5945..000000000000
--- a/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 9d38f57d84fb9a6f2c4e60f7051f685842f34e0f Mon Sep 17 00:00:00 2001
-From: Xaver Hugl <xaver.hugl@gmail.com>
-Date: Mon, 28 Mar 2022 18:08:59 +0200
-Subject: [PATCH] waylandserver: only signal lockScreenShown once it has
- actually been shown
-
-When the system goes to suspend and screen locking for suspend is enabled,
-suspend is inhibited until ScreenLocker::KSldApp::self()->lockScreenShown()
-gets called, in order to make sure that the lockscreen is shown before the
-system goes to standby, and thus also when the system wakes (instead of
-potentially sensitive user information).
-However, signalling that when the lockscreen gets mapped can't work reliably,
-as it's then a matter of timing whether or not KWin actually presents an
-image with the lockscreen before suspending. To fix that, this commit replaces
-that logic with only calling lockScreenShown once every output actually got a
-lockscreen presented.
----
- src/wayland_server.cpp | 25 +++++++++++++++++++++----
- src/wayland_server.h | 10 ++++++++++
- 2 files changed, 31 insertions(+), 4 deletions(-)
-
-diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp
-index c850a1b697..6d5e1206a5 100644
---- a/src/wayland_server.cpp
-+++ b/src/wayland_server.cpp
-@@ -213,10 +213,6 @@ KWaylandServer::ClientConnection *WaylandServer::inputMethodConnection() const
-
- void WaylandServer::registerShellClient(AbstractClient *client)
- {
-- if (client->isLockScreen()) {
-- ScreenLocker::KSldApp::self()->lockScreenShown();
-- }
--
- if (client->readyForPainting()) {
- Q_EMIT shellClientAdded(client);
- } else {
-@@ -623,6 +619,8 @@ void WaylandServer::initScreenLocker()
- m_screenLockerClientConnection = nullptr;
- }
-
-+ new LockScreenPresentationWatcher(this);
-+
- const QVector<SeatInterface *> seatIfaces = m_display->seats();
- for (auto *seat : seatIfaces) {
- disconnect(seat, &KWaylandServer::SeatInterface::timestampChanged,
-@@ -797,4 +795,23 @@ QString WaylandServer::socketName() const
- return QString();
- }
-
-+WaylandServer::LockScreenPresentationWatcher::LockScreenPresentationWatcher(WaylandServer *server)
-+{
-+ connect(server, &WaylandServer::shellClientAdded, this, [this](AbstractClient *client) {
-+ if (client->isLockScreen()) {
-+ connect(client->output()->renderLoop(), &RenderLoop::framePresented, this, [this, client]() {
-+ // only signal lockScreenShown once all outputs have been presented at least once
-+ m_signaledOutputs << client->output();
-+ if (m_signaledOutputs.size() == kwinApp()->platform()->enabledOutputs().size()) {
-+ ScreenLocker::KSldApp::self()->lockScreenShown();
-+ delete this;
-+ }
-+ });
-+ }
-+ });
-+ QTimer::singleShot(1000, this, [this]() {
-+ ScreenLocker::KSldApp::self()->lockScreenShown();
-+ delete this;
-+ });
-+}
- }
-diff --git a/src/wayland_server.h b/src/wayland_server.h
-index bf1ba6eee5..58dda9a7a2 100644
---- a/src/wayland_server.h
-+++ b/src/wayland_server.h
-@@ -243,6 +243,16 @@ private:
- void handleOutputRemoved(AbstractOutput *output);
- void handleOutputEnabled(AbstractOutput *output);
- void handleOutputDisabled(AbstractOutput *output);
-+
-+ class LockScreenPresentationWatcher : public QObject
-+ {
-+ public:
-+ LockScreenPresentationWatcher(WaylandServer *server);
-+
-+ private:
-+ QSet<AbstractOutput *> m_signaledOutputs;
-+ };
-+
- KWaylandServer::Display *m_display = nullptr;
- KWaylandServer::CompositorInterface *m_compositor = nullptr;
- KWaylandServer::SeatInterface *m_seat = nullptr;
---
-GitLab
-