pull in some 5.5 branch fixes

epel9
Rex Dieter 9 years ago
parent 235f0c744b
commit c39da1d9e9

@ -0,0 +1,123 @@
From 7a0096ba99d7a71ae9f45d7c0011d0ebb1eae23d Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <kde@privat.broulik.de>
Date: Thu, 25 Feb 2016 22:16:22 +0100
Subject: [PATCH 4/5] [User Switcher] Fix session switching when automatic
screen locking is enabled
When automatic screen locking is enabled, we want to ensure the screen is fully locked
before we switch sessions or go to the login screen to avoid brief exposure of the desktop
when we return.
This check happens asynchronously and because the User Switcher dialog closes immediately
after issuing the switch request, the SessionsModel is already destroyed and the reply is never
actually processed.
BUG: 356945
FIXED-IN: 5.5.5
Differential Revision: https://phabricator.kde.org/D1020
---
components/sessionsprivate/sessionsmodel.cpp | 6 ++++++
components/sessionsprivate/sessionsmodel.h | 4 +++-
lookandfeel/contents/userswitcher/UserSwitcher.qml | 7 +++++--
3 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/components/sessionsprivate/sessionsmodel.cpp b/components/sessionsprivate/sessionsmodel.cpp
index 3e3a987..600e682 100644
--- a/components/sessionsprivate/sessionsmodel.cpp
+++ b/components/sessionsprivate/sessionsmodel.cpp
@@ -45,8 +45,10 @@ SessionsModel::SessionsModel(QObject *parent)
if (active) {
if (m_pendingVt) {
m_displayManager.switchVT(m_pendingVt);
+ emit switchedUser(m_pendingVt);
} else if (m_pendingReserve) {
m_displayManager.startReserve();
+ emit startNewSession();
}
m_pendingVt = 0;
@@ -78,6 +80,7 @@ void SessionsModel::switchUser(int vt, bool shouldLock)
if (!shouldLock) {
m_displayManager.switchVT(vt);
+ emit switchedUser(vt);
return;
}
@@ -85,6 +88,7 @@ void SessionsModel::switchUser(int vt, bool shouldLock)
if (locked) {
// already locked, switch right away
m_displayManager.switchVT(vt);
+ emit switchedUser(vt);
} else {
m_pendingReserve = false;
m_pendingVt = vt;
@@ -101,6 +105,7 @@ void SessionsModel::startNewSession(bool shouldLock)
if (!shouldLock) {
m_displayManager.startReserve();
+ emit startedNewSession();
return;
}
@@ -108,6 +113,7 @@ void SessionsModel::startNewSession(bool shouldLock)
if (locked) {
// already locked, switch right away
m_displayManager.startReserve();
+ emit startedNewSession();
} else {
m_pendingReserve = true;
m_pendingVt = 0;
diff --git a/components/sessionsprivate/sessionsmodel.h b/components/sessionsprivate/sessionsmodel.h
index fe7af32..827bd04 100644
--- a/components/sessionsprivate/sessionsmodel.h
+++ b/components/sessionsprivate/sessionsmodel.h
@@ -86,9 +86,11 @@ public:
signals:
void shouldLockChanged();
-
void countChanged();
+ void switchedUser(int vt);
+ void startedNewSession();
+
private:
void checkScreenLocked(const std::function<void (bool)> &cb);
diff --git a/lookandfeel/contents/userswitcher/UserSwitcher.qml b/lookandfeel/contents/userswitcher/UserSwitcher.qml
index 6dd1932..da961a9 100644
--- a/lookandfeel/contents/userswitcher/UserSwitcher.qml
+++ b/lookandfeel/contents/userswitcher/UserSwitcher.qml
@@ -38,6 +38,11 @@ Item {
SessionsModel {
id: sessionsModel
+ // the calls takes place asynchronously; if we were to dismiss the dialog right
+ // after startNewSession/switchUser we would be destroyed before the reply
+ // returned leaving us do nothing (Bug 356945)
+ onStartedNewSession: root.dismissed()
+ onSwitchedUser: root.dismissed()
}
Controls.Action {
@@ -125,7 +130,6 @@ Item {
visible: sessionsModel.canStartNewSession
onClicked: {
sessionsModel.startNewSession(sessionsModel.shouldLock)
- root.dismissed()
}
}
@@ -148,7 +152,6 @@ Item {
visible: sessionsModel.count > 0
onClicked: {
sessionsModel.switchUser(block.mainItem.selectedItem.vtNumber, sessionsModel.shouldLock)
- root.dismissed()
}
Controls.Action {
--
2.5.0

@ -0,0 +1,25 @@
From e722b1e5f214ec1d007f9b856b97293df16ea4fb Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <kde@privat.broulik.de>
Date: Fri, 26 Feb 2016 14:22:38 +0100
Subject: [PATCH 5/5] Fix typo
---
components/sessionsprivate/sessionsmodel.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/sessionsprivate/sessionsmodel.cpp b/components/sessionsprivate/sessionsmodel.cpp
index 600e682..1efbe52 100644
--- a/components/sessionsprivate/sessionsmodel.cpp
+++ b/components/sessionsprivate/sessionsmodel.cpp
@@ -48,7 +48,7 @@ SessionsModel::SessionsModel(QObject *parent)
emit switchedUser(m_pendingVt);
} else if (m_pendingReserve) {
m_displayManager.startReserve();
- emit startNewSession();
+ emit startedNewSession();
}
m_pendingVt = 0;
--
2.5.0

@ -7,7 +7,7 @@
Name: plasma-workspace
Summary: Plasma workspace, applications and applets
Version: 5.5.4
Release: 4%{?dist}
Release: 5%{?dist}
License: GPLv2+
URL: https://projects.kde.org/plasma-workspace
@ -41,6 +41,8 @@ Patch1: kde-runtime-4.9.0-installdbgsymbols.patch
## upstream Patches
Patch101: 0001-reset-the-model-on-list-always-shown-hide-change.patch
Patch104: 0004-User-Switcher-Fix-session-switching-when-automatic-s.patch
Patch105: 0005-Fix-typo.patch
# master branch
Patch199: 0099-Use-ConfigureNotify-instead-of-xcb_configure_window-.patch
@ -348,6 +350,8 @@ Requires: qt5-qttools
%setup -q
%patch101 -p1 -b .0001
%patch104 -p1 -b .0004
%patch105 -p1 -b .0005
%patch199 -p1 -b .0099
%patch200 -p1 -b .0100
%patch201 -p1 -b .0101
@ -574,6 +578,9 @@ fi
%changelog
* Mon Feb 29 2016 Rex Dieter <rdieter@fedoraproject.org> 5.5.4-5
- pull in some 5.5 branch fixes
* Mon Feb 22 2016 Rex Dieter <rdieter@fedoraproject.org> 5.5.4-4
- -wayland: Requires: xorg-x11-server-Xwayland

Loading…
Cancel
Save