summaryrefslogtreecommitdiff
path: root/src/helpers/Monitor.cpp
diff options
context:
space:
mode:
authorKamikadze <40305144+Kam1k4dze@users.noreply.github.com>2025-07-09 17:39:36 +0500
committerGitHub <noreply@github.com>2025-07-09 14:39:36 +0200
commitc6497a719379e36c25df5f1980a5b2a1a78d3536 (patch)
tree35ba1cf933fc7414f07390fb0b7aad26d140d0ce /src/helpers/Monitor.cpp
parent9517d0eaa4ef93de67dc80fecca7a826f7ad556d (diff)
internal: Prevent double-free in attemptDirectScanout (#10974)
Diffstat (limited to 'src/helpers/Monitor.cpp')
-rw-r--r--src/helpers/Monitor.cpp5
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;
}