diff options
| author | Ikalco <73481042+ikalco@users.noreply.github.com> | 2025-03-17 07:06:58 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-17 13:06:58 +0100 |
| commit | 5cef2f44fed662c8cac256877b0a7141b9ce2440 (patch) | |
| tree | 7e825516af9049300ea4f366766e55b5d8ac34f3 /src/helpers/Monitor.cpp | |
| parent | 22154fa272201950a3d37e2a40d9dc3a9cc92329 (diff) | |
renderer: allow commits when buffer is unchanged but cursor changed (#9648)
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 71022425..9fd4d35d 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1355,9 +1355,8 @@ bool CMonitor::attemptDirectScanout() { Debug::log(TRACE, "attemptDirectScanout: surface {:x} passed, will attempt, buffer {}", (uintptr_t)PSURFACE.get(), (uintptr_t)PSURFACE->current.buffer->buffer.get()); - auto PBUFFER = PSURFACE->current.buffer->buffer.lock(); - if (PBUFFER == output->state->state().buffer) - return true; + auto PBUFFER = PSURFACE->current.buffer->buffer.lock(); + bool SAMEBUFFER = PBUFFER == output->state->state().buffer; // FIXME: make sure the buffer actually follows the available scanout dmabuf formats // and comes from the appropriate device. This may implode on multi-gpu!! @@ -1371,7 +1370,8 @@ bool CMonitor::attemptDirectScanout() { drmFormat = params.format; } - output->state->setBuffer(PBUFFER); + if (!SAMEBUFFER) + output->state->setBuffer(PBUFFER); output->state->setPresentationMode(tearingState.activelyTearing ? Aquamarine::eOutputPresentationMode::AQ_OUTPUT_PRESENTATION_IMMEDIATE : Aquamarine::eOutputPresentationMode::AQ_OUTPUT_PRESENTATION_VSYNC); @@ -1426,7 +1426,7 @@ bool CMonitor::attemptDirectScanout() { Debug::log(LOG, "Entered a direct scanout to {:x}: \"{}\"", (uintptr_t)PCANDIDATE.get(), PCANDIDATE->m_szTitle); } - if (!PBUFFER->lockedByBackend || PBUFFER->hlEvents.backendRelease) + if (!PBUFFER->lockedByBackend || PBUFFER->hlEvents.backendRelease || SAMEBUFFER) return true; // lock buffer while DRM/KMS is using it, then release it when page flip happens since DRM/KMS should be done by then |
