From c39da1d9e9c1bbeace312191c9cbd050212469d0 Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Mon, 29 Feb 2016 09:20:44 -0600 Subject: [PATCH] pull in some 5.5 branch fixes --- ...x-session-switching-when-automatic-s.patch | 123 ++++++++++++++++++ 0005-Fix-typo.patch | 25 ++++ plasma-workspace.spec | 9 +- 3 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 0004-User-Switcher-Fix-session-switching-when-automatic-s.patch create mode 100644 0005-Fix-typo.patch diff --git a/0004-User-Switcher-Fix-session-switching-when-automatic-s.patch b/0004-User-Switcher-Fix-session-switching-when-automatic-s.patch new file mode 100644 index 0000000..282ee4a --- /dev/null +++ b/0004-User-Switcher-Fix-session-switching-when-automatic-s.patch @@ -0,0 +1,123 @@ +From 7a0096ba99d7a71ae9f45d7c0011d0ebb1eae23d Mon Sep 17 00:00:00 2001 +From: Kai Uwe Broulik +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 &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 + diff --git a/0005-Fix-typo.patch b/0005-Fix-typo.patch new file mode 100644 index 0000000..034a5c2 --- /dev/null +++ b/0005-Fix-typo.patch @@ -0,0 +1,25 @@ +From e722b1e5f214ec1d007f9b856b97293df16ea4fb Mon Sep 17 00:00:00 2001 +From: Kai Uwe Broulik +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 + diff --git a/plasma-workspace.spec b/plasma-workspace.spec index ffdea64..f5ba72f 100644 --- a/plasma-workspace.spec +++ b/plasma-workspace.spec @@ -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 5.5.4-5 +- pull in some 5.5 branch fixes + * Mon Feb 22 2016 Rex Dieter 5.5.4-4 - -wayland: Requires: xorg-x11-server-Xwayland