renderer: avoid spamming software cursor locks

This commit is contained in:
vaxerski 2023-09-30 16:55:41 +01:00
parent 772c7d1d3c
commit e2b72b2975

View file

@ -884,8 +884,15 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
} }
} }
if (pMonitor->activelyTearing != shouldTear) {
// change of state
pMonitor->activelyTearing = shouldTear; pMonitor->activelyTearing = shouldTear;
for (auto& m : g_pCompositor->m_vMonitors) {
wlr_output_lock_software_cursors(m->output, pMonitor->activelyTearing);
}
}
EMIT_HOOK_EVENT("preRender", pMonitor); EMIT_HOOK_EVENT("preRender", pMonitor);
timespec now; timespec now;
@ -1025,7 +1032,6 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
TRACY_GPU_ZONE("RenderCursor"); TRACY_GPU_ZONE("RenderCursor");
bool lockSoftware = pMonitor == g_pCompositor->getMonitorFromCursor() && *PZOOMFACTOR != 1.f; 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) { if (lockSoftware) {
wlr_output_lock_software_cursors(pMonitor->output, true); wlr_output_lock_software_cursors(pMonitor->output, true);