From cdd5729642be0feb4caabc33553823faf769e01e Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Wed, 28 Feb 2024 23:32:40 -0800 Subject: [PATCH] feat(slock): intentionally protocol error if lock is destroyed --- src/wayland/session_lock/lock.cpp | 7 ++++++- src/wayland/session_lock/session_lock.cpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/wayland/session_lock/lock.cpp b/src/wayland/session_lock/lock.cpp index fb53ce2..ee7161c 100644 --- a/src/wayland/session_lock/lock.cpp +++ b/src/wayland/session_lock/lock.cpp @@ -13,7 +13,12 @@ QSWaylandSessionLock::QSWaylandSessionLock( this->init(lock); // if isInitialized is false that means we already unlocked. } -QSWaylandSessionLock::~QSWaylandSessionLock() { this->unlock(); } +QSWaylandSessionLock::~QSWaylandSessionLock() { + if (this->isInitialized()) { + // This will intentionally lock the session if the lock is destroyed without calling unlock. + this->destroy(); + } +} void QSWaylandSessionLock::unlock() { if (this->isInitialized()) { diff --git a/src/wayland/session_lock/session_lock.cpp b/src/wayland/session_lock/session_lock.cpp index dc08d7d..4f5fdd5 100644 --- a/src/wayland/session_lock/session_lock.cpp +++ b/src/wayland/session_lock/session_lock.cpp @@ -36,6 +36,7 @@ bool SessionLockManager::lock() { bool SessionLockManager::unlock() { if (!this->isLocked()) return false; + this->mLock->unlock(); auto* lock = this->mLock; this->mLock = nullptr; delete lock;