Skip to content

Commit fbf8178

Browse files
Treehugger RobotAndroid (Google) Code Review
authored andcommitted
Merge "Fix out of bounds error when updating composition summary" into main
2 parents 3786b82 + a9889e9 commit fbf8178

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

services/surfaceflinger/SurfaceFlinger.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2978,22 +2978,21 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
29782978
}
29792979

29802980
int index = 0;
2981-
std::array<char, WorkloadTracer::COMPOSITION_SUMMARY_SIZE> compositionSummary = {0};
2981+
ftl::StaticVector<char, WorkloadTracer::COMPOSITION_SUMMARY_SIZE> compositionSummary;
29822982
auto lastLayerStack = ui::INVALID_LAYER_STACK;
29832983
for (auto& [layer, layerFE] : layers) {
29842984
CompositionResult compositionResult{layerFE->stealCompositionResult()};
2985-
if (index < compositionSummary.size()) {
2986-
if (lastLayerStack != ui::INVALID_LAYER_STACK &&
2987-
lastLayerStack != layerFE->mSnapshot->outputFilter.layerStack) {
2985+
if (lastLayerStack != layerFE->mSnapshot->outputFilter.layerStack) {
2986+
if (lastLayerStack != ui::INVALID_LAYER_STACK) {
29882987
// add a space to separate displays
2989-
compositionSummary[index++] = ' ';
2988+
compositionSummary.push_back(' ');
29902989
}
29912990
lastLayerStack = layerFE->mSnapshot->outputFilter.layerStack;
2992-
compositionSummary[index++] = layerFE->mSnapshot->classifyCompositionForDebug(
2993-
layerFE->getHwcCompositionType());
2994-
if (layerFE->mSnapshot->hasEffect()) {
2995-
compositedWorkload |= adpf::Workload::EFFECTS;
2996-
}
2991+
}
2992+
compositionSummary.push_back(
2993+
layerFE->mSnapshot->classifyCompositionForDebug(layerFE->getHwcCompositionType()));
2994+
if (layerFE->mSnapshot->hasEffect()) {
2995+
compositedWorkload |= adpf::Workload::EFFECTS;
29972996
}
29982997

29992998
if (compositionResult.lastClientCompositionFence) {
@@ -3010,7 +3009,8 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
30103009
SFTRACE_INSTANT_FOR_TRACK(WorkloadTracer::TRACK_NAME,
30113010
ftl::Concat("Layers: ", layers.size(), " ",
30123011
ftl::truncated<WorkloadTracer::COMPOSITION_SUMMARY_SIZE>(
3013-
compositionSummary.data()))
3012+
std::string_view(compositionSummary.begin(),
3013+
compositionSummary.size())))
30143014
.c_str());
30153015

30163016
mPowerAdvisor->setCompositedWorkload(compositedWorkload);

0 commit comments

Comments
 (0)