Merge "Trace drawing state"
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 50e2c6f..5b40aea 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -1795,7 +1795,7 @@
LayerProtoHelper::writeToProto(transform, layerInfo->mutable_transform());
LayerProtoHelper::writeToProto(requestedTransform, layerInfo->mutable_requested_transform());
- auto parent = getParent();
+ auto parent = useDrawing ? mDrawingParent.promote() : mCurrentParent.promote();
if (parent != nullptr) {
layerInfo->set_parent(parent->sequence);
}
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 1237ee4..5e1de75 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1585,7 +1585,7 @@
ATRACE_CALL();
ATRACE_NAME(where);
if (CC_UNLIKELY(mTracing.isEnabled())) {
- mTracing.traceLayers(where, dumpProtoInfo());
+ mTracing.traceLayers(where, dumpProtoInfo(LayerVector::StateSet::Drawing));
}
}
@@ -3540,7 +3540,7 @@
size_t numArgs = args.size();
if (asProto) {
- LayersProto layersProto = dumpProtoInfo();
+ LayersProto layersProto = dumpProtoInfo(LayerVector::StateSet::Current);
result.append(layersProto.SerializeAsString().c_str(), layersProto.ByteSize());
dumpAll = false;
}
@@ -3789,11 +3789,13 @@
result.append("\n");
}
-LayersProto SurfaceFlinger::dumpProtoInfo() const {
+LayersProto SurfaceFlinger::dumpProtoInfo(LayerVector::StateSet stateSet) const {
LayersProto layersProto;
- mCurrentState.traverseInZOrder([&](Layer* layer) {
+ const bool useDrawing = stateSet == LayerVector::StateSet::Drawing;
+ const State& state = useDrawing ? mDrawingState : mCurrentState;
+ state.traverseInZOrder([&](Layer* layer) {
LayerProto* layerProto = layersProto.add_layers();
- layer->writeToProto(layerProto, LayerVector::StateSet::Current);
+ layer->writeToProto(layerProto, stateSet);
});
return layersProto;
@@ -3864,7 +3866,7 @@
result.appendFormat("Visible layers (count = %zu)\n", mNumLayers);
colorizer.reset(result);
- LayersProto layersProto = dumpProtoInfo();
+ LayersProto layersProto = dumpProtoInfo(LayerVector::StateSet::Current);
auto layerTree = LayerProtoParser::generateLayerTree(layersProto);
result.append(LayerProtoParser::layersToString(layerTree).c_str());
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 67e4607..386d42b 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -602,7 +602,7 @@
std::vector<OccupancyTracker::Segment>&& history);
void dumpBufferingStats(String8& result) const;
void dumpWideColorInfo(String8& result) const;
- LayersProto dumpProtoInfo() const;
+ LayersProto dumpProtoInfo(LayerVector::StateSet stateSet) const;
bool isLayerTripleBufferingDisabled() const {
return this->mLayerTripleBufferingDisabled;