diff options
| author | UjinT34 <41110182+UjinT34@users.noreply.github.com> | 2026-02-07 15:38:01 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-07 12:38:01 +0000 |
| commit | 9f9dbb0dc54e76ef7d9dd6da8961e9ca1d4ac0ec (patch) | |
| tree | 3ca57255748bedc670c29fce08454af05cb965e1 /src/managers/PointerManager.cpp | |
| parent | cfbbfb591ae5c7d11bae72effe6e08ef60ce7453 (diff) | |
renderer: allow tearing with DS with invisible cursors (#13155)
Diffstat (limited to 'src/managers/PointerManager.cpp')
| -rw-r--r-- | src/managers/PointerManager.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/managers/PointerManager.cpp b/src/managers/PointerManager.cpp index 44084d2c..5db37cb0 100644 --- a/src/managers/PointerManager.cpp +++ b/src/managers/PointerManager.cpp @@ -72,8 +72,10 @@ void CPointerManager::lockSoftwareForMonitor(PHLMONITOR mon) { void CPointerManager::unlockSoftwareForMonitor(PHLMONITOR mon) { auto const state = stateFor(mon); state->softwareLocks--; - if (state->softwareLocks < 0) + if (state->softwareLocks < 0) { state->softwareLocks = 0; + Log::logger->log(Log::WARN, "Unlocking SW for monitor while it's not locked"); + } if (state->softwareLocks == 0) updateCursorBackend(); @@ -81,7 +83,12 @@ void CPointerManager::unlockSoftwareForMonitor(PHLMONITOR mon) { bool CPointerManager::softwareLockedFor(PHLMONITOR mon) { auto const state = stateFor(mon); - return state->softwareLocks > 0 || state->hardwareFailed; + return state->softwareLocks > 0 || (state->hardwareFailed && hasCursor() && g_pHyprRenderer->shouldRenderCursor()); +} + +bool CPointerManager::hasVisibleHWCursor(PHLMONITOR pMonitor) { + auto const state = stateFor(pMonitor); + return state->softwareLocks == 0 && !state->hardwareFailed && hasCursor() && g_pHyprRenderer->shouldRenderCursor(); } Vector2D CPointerManager::position() { |
