diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-04-22 12:36:50 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-04-22 12:36:54 +0100 |
| commit | 1911e4262baed82c3d7b7354ae52155a5839594d (patch) | |
| tree | 61f6bae00c6f358d2b55df9628749cb708844f96 /src/render/Renderer.cpp | |
| parent | d366fc48b825b9a0a14fdf4b03bf5d1919554fdc (diff) | |
renderer: skip rendering bottom layers on fullscreen opaque
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 3ec3724a..c81690bc 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -440,11 +440,16 @@ void CHyprRenderer::renderAllClientsForWorkspace(CMonitor* pMonitor, CWorkspace* g_pHyprOpenGL->m_RenderData.renderModif = RENDERMODIFDATA; // Render layer surfaces below windows for monitor - for (auto& ls : pMonitor->m_aLayerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]) { - renderLayer(ls.get(), pMonitor, time); - } - for (auto& ls : pMonitor->m_aLayerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]) { - renderLayer(ls.get(), pMonitor, time); + // if we have a fullscreen, opaque window that convers the screen, we can skip this. + // TODO: check better with solitary after MR for tearing. + const auto PFULLWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(pWorkspace->m_iID); + if (g_pHyprOpenGL->m_RenderData.pCurrentMonData->blurFBDirty || !pWorkspace->m_bHasFullscreenWindow || pWorkspace->m_efFullscreenMode != FULLSCREEN_FULL || !PFULLWINDOW || PFULLWINDOW->m_vRealSize.isBeingAnimated() || !PFULLWINDOW->opaque()) { + for (auto& ls : pMonitor->m_aLayerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]) { + renderLayer(ls.get(), pMonitor, time); + } + for (auto& ls : pMonitor->m_aLayerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]) { + renderLayer(ls.get(), pMonitor, time); + } } // pre window pass |
