diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-09-30 16:55:41 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-09-30 16:55:41 +0100 |
| commit | e2b72b2975782719759b989853578db95671b069 (patch) | |
| tree | c07b2653b075ba23ee3d6e4a7b669facad9152f6 /src/render/Renderer.cpp | |
| parent | 772c7d1d3cc7b3dd38450edf0ac1152419ef9eb1 (diff) | |
renderer: avoid spamming software cursor locks
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 10 |
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); |
