From 90e1411315065ead5b5a7873be4109bdfb9f5470 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Tue, 30 Apr 2024 16:32:05 +0100 Subject: session-lock: move to new impl --- src/managers/SessionLockManager.hpp | 46 ++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 16 deletions(-) (limited to 'src/managers/SessionLockManager.hpp') diff --git a/src/managers/SessionLockManager.hpp b/src/managers/SessionLockManager.hpp index c2c539db..d655a2bc 100644 --- a/src/managers/SessionLockManager.hpp +++ b/src/managers/SessionLockManager.hpp @@ -2,51 +2,65 @@ #include "../defines.hpp" #include "../helpers/Timer.hpp" +#include "../helpers/signal/Listener.hpp" #include #include +class CSessionLockSurface; +class CSessionLock; + struct SSessionLockSurface { - wlr_session_lock_surface_v1* pWlrLockSurface = nullptr; - uint64_t iMonitorID = -1; + SSessionLockSurface(SP surface_); + + WP surface; + wlr_surface* pWlrSurface = nullptr; + uint64_t iMonitorID = -1; - bool mapped = false; + bool mapped = false; - DYNLISTENER(map); - DYNLISTENER(destroy); - DYNLISTENER(commit); + struct { + CHyprSignalListener map; + CHyprSignalListener destroy; + CHyprSignalListener commit; + } listeners; }; struct SSessionLock { - bool active = false; - wlr_session_lock_v1* pWlrLock = nullptr; + WP lock; std::vector> vSessionLockSurfaces; std::unordered_map mMonitorsWithoutMappedSurfaceTimers; - DYNLISTENER(newSurface); - DYNLISTENER(unlock); - DYNLISTENER(destroy); + struct { + CHyprSignalListener newSurface; + CHyprSignalListener unlock; + CHyprSignalListener destroy; + } listeners; }; class CSessionLockManager { public: - CSessionLockManager() = default; + CSessionLockManager(); ~CSessionLockManager() = default; - void onNewSessionLock(wlr_session_lock_v1*); SSessionLockSurface* getSessionLockSurfaceForMonitor(uint64_t); float getRedScreenAlphaForMonitor(uint64_t); bool isSessionLocked(); + bool isSessionLockPresent(); bool isSurfaceSessionLock(wlr_surface*); void removeSessionLockSurface(SSessionLockSurface*); - void activateLock(); - private: - SSessionLock m_sSessionLock; + UP m_pSessionLock; + + struct { + CHyprSignalListener newLock; + } listeners; + + void onNewSessionLock(SP pWlrLock); }; inline std::unique_ptr g_pSessionLockManager; \ No newline at end of file -- cgit v1.2.3