From 29cf6264a29752de3ed74cacbac6b1d2dbf1ad55 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Sat, 4 Apr 2026 09:06:07 -0400 Subject: desktop/window: reduce window deco updates (#13980) AVARDAMAGE_ENTIRE doesn't mean the geometry changed, so no point in an expensive update --- src/desktop/view/Window.cpp | 15 ++++++++++++--- src/managers/animation/AnimationManager.cpp | 7 ++----- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/desktop/view/Window.cpp b/src/desktop/view/Window.cpp index 2a388d68..e9f22021 100644 --- a/src/desktop/view/Window.cpp +++ b/src/desktop/view/Window.cpp @@ -658,12 +658,21 @@ void CWindow::onMap() { false); m_realSize->setUpdateCallback([this](auto) { - if (m_isMapped) - m_events.resize.emit(); + if (!m_isMapped) + return; + + updateWindowDecos(); + + m_events.resize.emit(); }); m_realPosition->setUpdateCallback([this](auto) { - if (m_isMapped && m_monitor != m_prevMonitor) { + if (!m_isMapped) + return; + + updateWindowDecos(); + + if (m_monitor != m_prevMonitor) { m_prevMonitor = m_monitor; m_events.monitorChanged.emit(); } diff --git a/src/managers/animation/AnimationManager.cpp b/src/managers/animation/AnimationManager.cpp index bb7e9930..5c52a7a5 100644 --- a/src/managers/animation/AnimationManager.cpp +++ b/src/managers/animation/AnimationManager.cpp @@ -150,16 +150,13 @@ static void handleUpdate(CAnimatedVariable& av, bool warp) { switch (av.m_Context.eDamagePolicy) { case AVARDAMAGE_ENTIRE: { - if (PWINDOW) { - PWINDOW->updateWindowDecos(); + if (PWINDOW) g_pHyprRenderer->damageWindow(PWINDOW); - } else if (PWORKSPACE) { + else if (PWORKSPACE) { for (auto const& w : g_pCompositor->m_windows) { if (!validMapped(w) || w->m_workspace != PWORKSPACE) continue; - w->updateWindowDecos(); - // damage any workspace window that is on any monitor if (!w->m_pinned) g_pHyprRenderer->damageWindow(w); -- cgit v1.2.3