Initialize layers with metadata
layers weren't being initialized with metadata, this meant a
traversal was required in order to apply the setmetadata call.
While this seemed to happen in practice, its a weird thing to
rely on.
Bug: 122925737
Test: Behavior is same
Change-Id: I455f6c69ce92e6045aa0c12f8cfbb70c1d283088
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 5c3fb05..a2bec93 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -104,6 +104,7 @@
mCurrentState.api = -1;
mCurrentState.hasColorTransform = false;
mCurrentState.colorSpaceAgnostic = false;
+ mCurrentState.metadata = args.metadata;
// drawing state & current state are identical
mDrawingState = mCurrentState;
@@ -1250,8 +1251,8 @@
// create background color layer if one does not yet exist
uint32_t flags = ISurfaceComposerClient::eFXSurfaceColor;
const String8& name = mName + "BackgroundColorLayer";
- mCurrentState.bgColorLayer =
- new ColorLayer(LayerCreationArgs(mFlinger.get(), nullptr, name, 0, 0, flags));
+ mCurrentState.bgColorLayer = new ColorLayer(
+ LayerCreationArgs(mFlinger.get(), nullptr, name, 0, 0, flags, LayerMetadata()));
// add to child list
addChild(mCurrentState.bgColorLayer);