From 210b456c154287b57a847ecf6bc64ee9250e9d47 Mon Sep 17 00:00:00 2001 From: Florian Walter Date: Tue, 25 Jun 2024 13:46:58 +0200 Subject: [PATCH] core: fix second instance of hyprlock unlocking session (#376) * fix second instance of hyprlock unlocking session * fix segfault when lock cannot be acquired * improve ordering of display roundtrips --- src/core/hyprlock.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/hyprlock.cpp b/src/core/hyprlock.cpp index d4c11d3..eedc963 100644 --- a/src/core/hyprlock.cpp +++ b/src/core/hyprlock.cpp @@ -926,6 +926,9 @@ void CHyprlock::acquireSessionLock() { Debug::log(LOG, "Locking session"); m_sLockState.lock = ext_session_lock_manager_v1_lock(m_sWaylandState.sessionLock); ext_session_lock_v1_add_listener(m_sLockState.lock, &sessionLockListener, nullptr); + + // wait for wayland to signal whether the session lock has been acquired + wl_display_roundtrip(m_sWaylandState.display); } void CHyprlock::releaseSessionLock() { @@ -958,8 +961,8 @@ void CHyprlock::onLockLocked() { void CHyprlock::onLockFinished() { Debug::log(LOG, "onLockFinished called. Seems we got yeeten. Is another lockscreen running?"); - ext_session_lock_v1_unlock_and_destroy(m_sLockState.lock); - m_sLockState.lock = nullptr; + g_pRenderer = nullptr; + exit(1); } ext_session_lock_manager_v1* CHyprlock::getSessionLockMgr() {