SF: partially revert df59f4744c0672cc69dad72b230a757c1e4be116
Avoid a composition cycle when the FrameRate votes updates,
but keep the old behavior for all other cases.
Bug: 339759346
Change-Id: Ic0696ddeee6ed10f1e6efcc0dbe9589d638900cd
Test: android.platform.test.scenario.gmail.OpenCloseComposeEmailMicrobenchmark#testOpenCloseComposeEmail
diff --git a/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp b/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp
index 52f8bea..4b0618e 100644
--- a/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp
+++ b/services/surfaceflinger/FrontEnd/LayerLifecycleManager.cpp
@@ -41,8 +41,7 @@
return;
}
- mGlobalChanges |= RequestedLayerState::Changes::Hierarchy |
- RequestedLayerState::Changes::RequiresComposition;
+ mGlobalChanges |= RequestedLayerState::Changes::Hierarchy;
for (auto& newLayer : newLayers) {
RequestedLayerState& layer = *newLayer.get();
auto [it, inserted] = mIdToLayer.try_emplace(layer.id, References{.owner = layer});
@@ -105,8 +104,7 @@
if (!layer.canBeDestroyed()) {
continue;
}
- layer.changes |= RequestedLayerState::Changes::Destroyed |
- RequestedLayerState::Changes::RequiresComposition;
+ layer.changes |= RequestedLayerState::Changes::Destroyed;
layersToBeDestroyed.emplace_back(layerId);
}
@@ -114,8 +112,7 @@
return;
}
- mGlobalChanges |= RequestedLayerState::Changes::Hierarchy |
- RequestedLayerState::Changes::RequiresComposition;
+ mGlobalChanges |= RequestedLayerState::Changes::Hierarchy;
for (size_t i = 0; i < layersToBeDestroyed.size(); i++) {
uint32_t layerId = layersToBeDestroyed[i];
auto it = mIdToLayer.find(layerId);
@@ -145,8 +142,7 @@
if (linkedLayer->parentId == layer.id) {
linkedLayer->parentId = UNASSIGNED_LAYER_ID;
if (linkedLayer->canBeDestroyed()) {
- linkedLayer->changes |= RequestedLayerState::Changes::Destroyed |
- RequestedLayerState::Changes::RequiresComposition;
+ linkedLayer->changes |= RequestedLayerState::Changes::Destroyed;
layersToBeDestroyed.emplace_back(linkedLayer->id);
}
}
@@ -253,8 +249,7 @@
layer_state_t::eDataspaceChanged | layer_state_t::eAlphaChanged;
bgColorLayer->changes |= RequestedLayerState::Changes::Content;
mChangedLayers.push_back(bgColorLayer);
- mGlobalChanges |= RequestedLayerState::Changes::Content |
- RequestedLayerState::Changes::RequiresComposition;
+ mGlobalChanges |= RequestedLayerState::Changes::Content;
}
}
@@ -412,8 +407,7 @@
layer.relativeParentId = unlinkLayer(layer.relativeParentId, layer.id);
layer.changes |=
RequestedLayerState::Changes::Hierarchy | RequestedLayerState::Changes::RelativeParent;
- mGlobalChanges |= RequestedLayerState::Changes::Hierarchy |
- RequestedLayerState::Changes::RequiresComposition;
+ mGlobalChanges |= RequestedLayerState::Changes::Hierarchy;
}
// Some layers mirror the entire display stack. Since we don't have a single root layer per display