summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-09-30 16:55:41 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-09-30 16:55:41 +0100
commite2b72b2975782719759b989853578db95671b069 (patch)
treec07b2653b075ba23ee3d6e4a7b669facad9152f6 /src/render/Renderer.cpp
parent772c7d1d3cc7b3dd38450edf0ac1152419ef9eb1 (diff)
renderer: avoid spamming software cursor locks
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 2e35efa8..ea6a246a 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -884,7 +884,14 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
}
}
- pMonitor->activelyTearing = shouldTear;
+ if (pMonitor->activelyTearing != shouldTear) {
+ // change of state
+ pMonitor->activelyTearing = shouldTear;
+
+ for (auto& m : g_pCompositor->m_vMonitors) {
+ wlr_output_lock_software_cursors(m->output, pMonitor->activelyTearing);
+ }
+ }
EMIT_HOOK_EVENT("preRender", pMonitor);
@@ -1025,7 +1032,6 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
TRACY_GPU_ZONE("RenderCursor");
bool lockSoftware = pMonitor == g_pCompositor->getMonitorFromCursor() && *PZOOMFACTOR != 1.f;
- lockSoftware = lockSoftware || std::ranges::any_of(g_pCompositor->m_vMonitors, [](const auto& m) { return m->activelyTearing; });
if (lockSoftware) {
wlr_output_lock_software_cursors(pMonitor->output, true);