diff options
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/OpenGL.cpp | 19 | ||||
| -rw-r--r-- | src/render/OpenGL.hpp | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 4095099b..a6db359a 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -579,6 +579,25 @@ void CHyprOpenGLImpl::markBlurDirtyForMonitor(CMonitor* pMonitor) { m_mMonitorRenderResources[pMonitor].blurFBDirty = true; } +void CHyprOpenGLImpl::preRender(CMonitor* pMonitor) { + static auto *const PBLURNEWOPTIMIZE = &g_pConfigManager->getConfigValuePtr("decoration:blur_new_optimizations")->intValue; + + if (!*PBLURNEWOPTIMIZE || !m_mMonitorRenderResources[pMonitor].blurFBDirty) + return; + + bool has = false; + + for (auto& w : g_pCompositor->m_vWindows) { + if (w->m_iWorkspaceID == pMonitor->activeWorkspace && w->m_bIsMapped && !w->m_bHidden && !w->m_bIsFloating) { + has = true; + break; + } + } + + if (has) + g_pHyprRenderer->damageMonitor(pMonitor); +} + void CHyprOpenGLImpl::preBlurForCurrentMonitor() { // make the fake dmg diff --git a/src/render/OpenGL.hpp b/src/render/OpenGL.hpp index 14995979..5e8d32e6 100644 --- a/src/render/OpenGL.hpp +++ b/src/render/OpenGL.hpp @@ -88,6 +88,7 @@ public: void markBlurDirtyForMonitor(CMonitor*); void preWindowPass(); + void preRender(CMonitor*); SCurrentRenderData m_RenderData; |
