summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-22 12:36:50 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-22 12:36:54 +0100
commit1911e4262baed82c3d7b7354ae52155a5839594d (patch)
tree61f6bae00c6f358d2b55df9628749cb708844f96 /src/render/Renderer.cpp
parentd366fc48b825b9a0a14fdf4b03bf5d1919554fdc (diff)
renderer: skip rendering bottom layers on fullscreen opaque
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp15
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