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;