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/helpers/Monitor.cpp | |
| parent | cfbbfb591ae5c7d11bae72effe6e08ef60ce7453 (diff) | |
renderer: allow tearing with DS with invisible cursors (#13155)
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index ab581394..f0077c63 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1724,6 +1724,10 @@ uint8_t CMonitor::isTearingBlocked(bool full) { } } + // TODO: remove this when kernel allows tearing + hw cursor updated + if (g_pPointerManager->hasVisibleHWCursor(m_self.lock())) + reasons |= TC_HW_CURSOR; + if (m_solitaryClient.expired()) { reasons |= TC_CANDIDATE; return reasons; @@ -1765,12 +1769,6 @@ uint16_t CMonitor::isDSBlocked(bool full) { } } - if (m_tearingState.activelyTearing) { - reasons |= DS_BLOCK_TEARING; - if (!full) - return reasons; - } - if (!m_mirrors.empty() || isMirror()) { reasons |= DS_BLOCK_MIRROR; if (!full) @@ -1862,7 +1860,7 @@ bool CMonitor::attemptDirectScanout() { } //#TODO this entire bit is bootleg deluxe, above bit is to not make vrr go down the drain, returning early here means fifo gets forever locked. - if (PSURFACE->m_fifo && *PSAMEFIFO) + if (PSURFACE->m_fifo && !m_tearingState.activelyTearing && *PSAMEFIFO) PSURFACE->m_stateQueue.unlockFirst(LOCK_REASON_FIFO); return true; |
