summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-04-03 20:42:38 +0100
committerVaxry <vaxry@vaxry.net>2024-04-03 20:42:38 +0100
commit10146f5ec50caeae2d835f5f6296137e2ac6f243 (patch)
treeb5fdff362de5213081bb37d6072980545c531e48 /src/render/Renderer.cpp
parentd88d5898807bf6f2462cecfb977b7624dafbf52e (diff)
core: fix some crash conditions around workspace ptrs in CWindow
ref #5402, supersedes #5409
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index b43f3a2d..af6b7aae 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -220,6 +220,9 @@ bool CHyprRenderer::shouldRenderWindow(CWindow* pWindow, CMonitor* pMonitor) {
if (!pWindow->m_pWorkspace && !pWindow->m_bFadingOut)
return false;
+ if (!pWindow->m_pWorkspace && pWindow->m_bFadingOut)
+ return pWindow->workspaceID() == pMonitor->activeWorkspaceID();
+
if (pWindow->m_bPinned)
return true;
@@ -1760,7 +1763,7 @@ void CHyprRenderer::damageWindow(CWindow* pWindow, bool forceFull) {
windowBox.translate(pWindow->m_vFloatingOffset);
for (auto& m : g_pCompositor->m_vMonitors) {
- if (g_pHyprRenderer->shouldRenderWindow(pWindow, m.get()) || forceFull) { // only damage if window is rendered on monitor
+ if (forceFull || g_pHyprRenderer->shouldRenderWindow(pWindow, m.get())) { // only damage if window is rendered on monitor
CBox fixedDamageBox = {windowBox.x - m->vecPosition.x, windowBox.y - m->vecPosition.y, windowBox.width, windowBox.height};
fixedDamageBox.scale(m->scale);
m->addDamage(&fixedDamageBox);