Merge "Fix releaseBufferCallback null pointer dereference" into sc-dev
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 7dc5e85..e6b74d0 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -292,8 +292,11 @@
// callback and a release buffer callback happening at the same time to avoid an
// additional ipc call from the server.
if (surfaceStats.previousBufferId) {
- ReleaseBufferCallback callback =
- popReleaseBufferCallbackLocked(surfaceStats.previousBufferId);
+ ReleaseBufferCallback callback;
+ {
+ std::scoped_lock<std::mutex> lock(mMutex);
+ callback = popReleaseBufferCallbackLocked(surfaceStats.previousBufferId);
+ }
if (callback) {
callback(surfaceStats.previousBufferId,
surfaceStats.previousReleaseFence