summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index b8b2fbc842..d116f1e6bd 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -4036,7 +4036,14 @@ status_t SurfaceFlinger::createBufferStateLayer(const sp<Client>& client, std::s
sp<Layer>* outLayer) {
LayerCreationArgs args(this, client, std::move(name), w, h, flags, std::move(metadata));
args.textureName = getNewTexture();
- sp<BufferStateLayer> layer = getFactory().createBufferStateLayer(args);
+ sp<BufferStateLayer> layer;
+ {
+ // TODO (b/173538294): Investigate why we need mStateLock here and above in
+ // createBufferQueue layer. Is it the renderengine::Image?
+ Mutex::Autolock lock(mStateLock);
+ layer = getFactory().createBufferStateLayer(args);
+
+ }
*handle = layer->getHandle();
*outLayer = layer;