summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-10-29 12:24:44 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-10-29 12:24:44 +0100
commit05f3eebd968455752eb95cee373bbf2d9a71deae (patch)
treedbdeb9a1a0a05da1f668220035ab63a4e26206e2 /src/render/Renderer.cpp
parent74d05d0adc14d920aa780b2ca2a51c9ca14fadd7 (diff)
avoid layout changes when unnecessary in applyMonitorRule
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 3247e499..24e6accd 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -1214,16 +1214,21 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
pMonitor->vecPosition = pMonitorRule->offset;
}
- if (!pMonitor->isMirror())
- wlr_output_layout_add(g_pCompositor->m_sWLROutputLayout, pMonitor->output, (int)pMonitor->vecPosition.x, (int)pMonitor->vecPosition.y);
-
wlr_output_enable(pMonitor->output, true);
// update renderer (here because it will call rollback, so we cannot do this before committing)
g_pHyprOpenGL->destroyMonitorResources(pMonitor);
// updato wlroots
- Events::listener_change(nullptr, nullptr);
+ if (!pMonitor->isMirror()) {
+ wlr_box box = {0, 0, 0, 0};
+ wlr_output_layout_get_box(g_pCompositor->m_sWLROutputLayout, pMonitor->output, &box);
+
+ if (!DELTALESSTHAN(box.x, pMonitor->vecPosition.x, 1) || !DELTALESSTHAN(box.y, pMonitor->vecPosition.y, 1)) {
+ wlr_output_layout_add(g_pCompositor->m_sWLROutputLayout, pMonitor->output, (int)pMonitor->vecPosition.x, (int)pMonitor->vecPosition.y);
+ Events::listener_change(nullptr, nullptr);
+ }
+ }
// updato us
arrangeLayersForMonitor(pMonitor->ID);