summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
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);