diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 7e75b02b..b57bb227 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1554,7 +1554,10 @@ bool CMonitor::attemptDirectScanout() { // lock buffer while DRM/KMS is using it, then release it when page flip happens since DRM/KMS should be done by then // btw buffer's syncReleaser will take care of signaling release point, so we don't do that here PBUFFER->lock(); - PBUFFER->onBackendRelease([PBUFFER]() { PBUFFER->unlock(); }); + PBUFFER->onBackendRelease([wb = WP{PBUFFER}] { + if (wb) + wb->unlock(); + }); return true; }