diff options
| author | Kamikadze <40305144+Kam1k4dze@users.noreply.github.com> | 2025-07-09 17:39:36 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-09 14:39:36 +0200 |
| commit | c6497a719379e36c25df5f1980a5b2a1a78d3536 (patch) | |
| tree | 35ba1cf933fc7414f07390fb0b7aad26d140d0ce /src/helpers/Monitor.cpp | |
| parent | 9517d0eaa4ef93de67dc80fecca7a826f7ad556d (diff) | |
internal: Prevent double-free in attemptDirectScanout (#10974)
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
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<IHLBuffer>{PBUFFER}] { + if (wb) + wb->unlock(); + }); return true; } |
