Changed mNumLayers to atomic
mNumLayers is accessed from multiple threads, binder thread when a layer
is created and main thread when a layer is destroyed. The variable
should be atomic to ensure it's thread safe.
Test: Builds and runs
Change-Id: I72962d148dfdeec8e1877b86f93cc53c8c7883a9
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 488b9ef..e4ed889 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -3441,7 +3441,7 @@
}
if (mNumLayers >= MAX_LAYERS) {
- ALOGE("AddClientLayer failed, mNumLayers (%zu) >= MAX_LAYERS (%zu)", mNumLayers,
+ ALOGE("AddClientLayer failed, mNumLayers (%zu) >= MAX_LAYERS (%zu)", mNumLayers.load(),
MAX_LAYERS);
return NO_MEMORY;
}
@@ -3465,7 +3465,7 @@
mMaxGraphicBufferProducerListSize,
"Suspected IGBP leak: %zu IGBPs (%zu max), %zu Layers",
mGraphicBufferProducerList.size(),
- mMaxGraphicBufferProducerListSize, mNumLayers);
+ mMaxGraphicBufferProducerListSize, mNumLayers.load());
}
mLayersAdded = true;
}
@@ -4839,7 +4839,7 @@
* Dump the visible layer list
*/
colorizer.bold(result);
- StringAppendF(&result, "Visible layers (count = %zu)\n", mNumLayers);
+ StringAppendF(&result, "Visible layers (count = %zu)\n", mNumLayers.load());
StringAppendF(&result, "GraphicBufferProducers: %zu, max %zu\n",
mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize);
colorizer.reset(result);