summaryrefslogtreecommitdiff
path: root/src/managers/SessionLockManager.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-05-13 12:36:36 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-05-13 12:36:36 +0100
commit896a78aaa0bb2e4d4f197ed1286c4f030dbaef5f (patch)
tree07b5223210ec2b646f877bd93e972bb06103f7e3 /src/managers/SessionLockManager.cpp
parentcc01550aff70a0cbee5b62db5f4a08789244998f (diff)
lock: add allow_session_lock_restore
Diffstat (limited to 'src/managers/SessionLockManager.cpp')
-rw-r--r--src/managers/SessionLockManager.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/managers/SessionLockManager.cpp b/src/managers/SessionLockManager.cpp
index 29e6ddca..df284c04 100644
--- a/src/managers/SessionLockManager.cpp
+++ b/src/managers/SessionLockManager.cpp
@@ -44,7 +44,9 @@ static void handleSurfaceDestroy(void* owner, void* data) {
void CSessionLockManager::onNewSessionLock(wlr_session_lock_v1* pWlrLock) {
- if (m_sSessionLock.active) {
+ static auto* const PALLOWRELOCK = &g_pConfigManager->getConfigValuePtr("misc:allow_session_lock_restore")->intValue;
+
+ if (m_sSessionLock.active && (!*PALLOWRELOCK || m_sSessionLock.pWlrLock)) {
Debug::log(LOG, "Attempted to lock a locked session!");
wlr_session_lock_v1_destroy(pWlrLock);
return;
@@ -113,6 +115,8 @@ void CSessionLockManager::onNewSessionLock(wlr_session_lock_v1* pWlrLock) {
g_pCompositor->focusSurface(nullptr);
+ m_sSessionLock.pWlrLock = nullptr;
+
for (auto& m : g_pCompositor->m_vMonitors)
g_pHyprRenderer->damageMonitor(m.get());
},