summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2026-04-04 15:08:59 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-04 11:53:49 -0400
commitaf4e196583e11a627485f5fb6220b7eb01e0e7a4 (patch)
treea582de7fc6f31bda901d9a2bfef7631e6abe4728 /src/render/Renderer.cpp
parente40857fc8ac93961769f6ac3e5776ab9b5b5ad32 (diff)
renderer: simplify renderWorkspaceWindowsFullscreen
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 36a10123..9d9a4ddb 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -317,7 +317,9 @@ void IHyprRenderer::renderWorkspaceWindowsFullscreen(PHLMONITOR pMonitor, PHLWOR
Event::bus()->m_events.render.stage.emit(RENDER_PRE_WINDOWS);
- // loop over the tiled windows that are fading out
+ // pre-filter renderable windows once for the tiled + floating passes
+ std::vector<PHLWINDOW> windows;
+ windows.reserve(g_pCompositor->m_windows.size());
for (auto const& w : g_pCompositor->m_windows) {
if (!shouldRenderWindow(w, pMonitor))
continue;
@@ -325,7 +327,15 @@ void IHyprRenderer::renderWorkspaceWindowsFullscreen(PHLMONITOR pMonitor, PHLWOR
if (w->m_alpha->value() == 0.f)
continue;
- if (w->isFullscreen() || w->m_isFloating)
+ if (w->isFullscreen())
+ continue;
+
+ windows.emplace_back(w);
+ }
+
+ // tiled windows that are fading out
+ for (auto const& w : windows) {
+ if (w->m_isFloating)
continue;
if (pWorkspace->m_isSpecialWorkspace != w->onSpecialWorkspace())
@@ -335,14 +345,8 @@ void IHyprRenderer::renderWorkspaceWindowsFullscreen(PHLMONITOR pMonitor, PHLWOR
}
// and floating ones too
- for (auto const& w : g_pCompositor->m_windows) {
- if (!shouldRenderWindow(w, pMonitor))
- continue;
-
- if (w->m_alpha->value() == 0.f)
- continue;
-
- if (w->isFullscreen() || !w->m_isFloating)
+ for (auto const& w : windows) {
+ if (!w->m_isFloating)
continue;
if (w->m_monitor == pWorkspace->m_monitor && pWorkspace->m_isSpecialWorkspace != w->onSpecialWorkspace())