diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-09-30 13:06:25 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-09-30 13:12:01 +0100 |
| commit | b8f8912db260c9fbe42afdba59f30f9e9546eef4 (patch) | |
| tree | 115ab57f10fcd6a575db2d2ae44b51bd73c80d72 /src | |
| parent | 86e8ed038f5b195cdf2548bc469f8f8bbc0caca8 (diff) | |
renderer: lock software cursors while tearing
Diffstat (limited to 'src')
| -rw-r--r-- | src/helpers/Monitor.hpp | 1 | ||||
| -rw-r--r-- | src/render/Renderer.cpp | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp index f8b8554c..d0a86f3f 100644 --- a/src/helpers/Monitor.hpp +++ b/src/helpers/Monitor.hpp @@ -87,6 +87,7 @@ class CMonitor { bool nextRenderTorn = false; bool ignoreNextFlipEvent = false; bool renderingFromVblankEvent = false; + bool activelyTearing = false; // for the special workspace. 0 means not open. int specialWorkspaceID = 0; diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index fefab56b..2e35efa8 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -884,6 +884,8 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) { } } + pMonitor->activelyTearing = shouldTear; + EMIT_HOOK_EVENT("preRender", pMonitor); timespec now; @@ -1023,6 +1025,7 @@ 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); |
