diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2023-09-01 22:03:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-01 22:03:56 +0200 |
| commit | d9292800a27ca7de5cb8b258651e535a7880e9e6 (patch) | |
| tree | f02edbf66db79faf820c4e45a2f141f4aa745f44 /src/managers | |
| parent | 774a5bedf862e9956c1db42522f39a7b9327b32f (diff) | |
internal: Unsafe state reworks (#3114)
Diffstat (limited to 'src/managers')
| -rw-r--r-- | src/managers/AnimationManager.cpp | 13 | ||||
| -rw-r--r-- | src/managers/AnimationManager.hpp | 1 | ||||
| -rw-r--r-- | src/managers/KeybindManager.cpp | 3 |
3 files changed, 10 insertions, 7 deletions
diff --git a/src/managers/AnimationManager.cpp b/src/managers/AnimationManager.cpp index f4e845c3..113b4851 100644 --- a/src/managers/AnimationManager.cpp +++ b/src/managers/AnimationManager.cpp @@ -3,8 +3,10 @@ #include "HookSystemManager.hpp" int wlTick(void* data) { + if (g_pAnimationManager) + g_pAnimationManager->onTicked(); - if (g_pCompositor->m_bSessionActive && g_pAnimationManager && g_pHookSystem && + if (g_pCompositor->m_bSessionActive && g_pAnimationManager && g_pHookSystem && !g_pCompositor->m_bUnsafeState && std::ranges::any_of(g_pCompositor->m_vMonitors, [](const auto& mon) { return mon->m_bEnabled && mon->output; })) { g_pAnimationManager->tick(); EMIT_HOOK_EVENT("tick", nullptr); @@ -37,10 +39,11 @@ void CAnimationManager::addBezierWithName(std::string name, const Vector2D& p1, m_mBezierCurves[name].setup(&points); } -void CAnimationManager::tick() { - +void CAnimationManager::onTicked() { m_bTickScheduled = false; +} +void CAnimationManager::tick() { static std::chrono::time_point lastTick = std::chrono::high_resolution_clock::now(); m_fLastTickTime = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - lastTick).count() / 1000.0; lastTick = std::chrono::high_resolution_clock::now(); @@ -247,8 +250,8 @@ void CAnimationManager::tick() { const auto EXTENTS = PDECO->getWindowDecorationExtents(); wlr_box dmg = {PWINDOW->m_vRealPosition.vec().x - EXTENTS.topLeft.x, PWINDOW->m_vRealPosition.vec().y - EXTENTS.topLeft.y, - PWINDOW->m_vRealSize.vec().x + EXTENTS.topLeft.x + EXTENTS.bottomRight.x, - PWINDOW->m_vRealSize.vec().y + EXTENTS.topLeft.y + EXTENTS.bottomRight.y}; + PWINDOW->m_vRealSize.vec().x + EXTENTS.topLeft.x + EXTENTS.bottomRight.x, + PWINDOW->m_vRealSize.vec().y + EXTENTS.topLeft.y + EXTENTS.bottomRight.y}; if (!*PSHADOWIGNOREWINDOW) { // easy, damage the entire box diff --git a/src/managers/AnimationManager.hpp b/src/managers/AnimationManager.hpp index cf1f19b3..281c61f8 100644 --- a/src/managers/AnimationManager.hpp +++ b/src/managers/AnimationManager.hpp @@ -14,6 +14,7 @@ class CAnimationManager { void tick(); bool shouldTickForNext(); + void onTicked(); void scheduleTick(); void addBezierWithName(std::string, const Vector2D&, const Vector2D&); void removeAllBeziers(); diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 0f1cd139..ef6ee6cb 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -215,7 +215,7 @@ bool CKeybindManager::tryMoveFocusToMonitor(CMonitor* monitor) { } bool CKeybindManager::onKeyEvent(wlr_keyboard_key_event* e, SKeyboard* pKeyboard) { - if (!g_pCompositor->m_bSessionActive) { + if (!g_pCompositor->m_bSessionActive || g_pCompositor->m_bUnsafeState) { m_dPressedKeycodes.clear(); m_dPressedKeysyms.clear(); return true; @@ -1502,7 +1502,6 @@ void CKeybindManager::toggleSpecialWorkspace(std::string args) { } bool requestedWorkspaceIsAlreadyOpen = false; - bool requestedWorkspaceExists = g_pCompositor->getWorkspaceByID(workspaceID); const auto PMONITOR = *PFOLLOWMOUSE == 1 ? g_pCompositor->getMonitorFromCursor() : g_pCompositor->m_pLastMonitor; int specialOpenOnMonitor = PMONITOR->specialWorkspaceID; |
