mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-05 14:42:01 -07:00
renderer: lock software cursors while tearing
This commit is contained in:
@@ -87,6 +87,7 @@ class CMonitor {
|
|||||||
bool nextRenderTorn = false;
|
bool nextRenderTorn = false;
|
||||||
bool ignoreNextFlipEvent = false;
|
bool ignoreNextFlipEvent = false;
|
||||||
bool renderingFromVblankEvent = false;
|
bool renderingFromVblankEvent = false;
|
||||||
|
bool activelyTearing = false;
|
||||||
|
|
||||||
// for the special workspace. 0 means not open.
|
// for the special workspace. 0 means not open.
|
||||||
int specialWorkspaceID = 0;
|
int specialWorkspaceID = 0;
|
||||||
|
@@ -884,6 +884,8 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pMonitor->activelyTearing = shouldTear;
|
||||||
|
|
||||||
EMIT_HOOK_EVENT("preRender", pMonitor);
|
EMIT_HOOK_EVENT("preRender", pMonitor);
|
||||||
|
|
||||||
timespec now;
|
timespec now;
|
||||||
@@ -1023,6 +1025,7 @@ 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);
|
||||||
|
Reference in New Issue
Block a user