diff options
author | 2025-01-31 15:16:40 -0800 | |
---|---|---|
committer | 2025-01-31 15:16:40 -0800 | |
commit | fbf8178f93b04cd118ee277f7cefc9b5c80f7791 (patch) | |
tree | fd9aa160da72814b52c0fa787978163a33e11ee1 | |
parent | 3786b8296c6320eb69813e6b4b291f766204c7db (diff) | |
parent | a9889e9e43300007b82128e5800ec0ab8f6f4a59 (diff) |
Merge "Fix out of bounds error when updating composition summary" into main
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 0591588113..eecdd72727 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -2978,22 +2978,21 @@ CompositeResultsPerDisplay SurfaceFlinger::composite( } int index = 0; - std::array<char, WorkloadTracer::COMPOSITION_SUMMARY_SIZE> compositionSummary = {0}; + ftl::StaticVector<char, WorkloadTracer::COMPOSITION_SUMMARY_SIZE> compositionSummary; auto lastLayerStack = ui::INVALID_LAYER_STACK; for (auto& [layer, layerFE] : layers) { CompositionResult compositionResult{layerFE->stealCompositionResult()}; - if (index < compositionSummary.size()) { - if (lastLayerStack != ui::INVALID_LAYER_STACK && - lastLayerStack != layerFE->mSnapshot->outputFilter.layerStack) { + if (lastLayerStack != layerFE->mSnapshot->outputFilter.layerStack) { + if (lastLayerStack != ui::INVALID_LAYER_STACK) { // add a space to separate displays - compositionSummary[index++] = ' '; + compositionSummary.push_back(' '); } lastLayerStack = layerFE->mSnapshot->outputFilter.layerStack; - compositionSummary[index++] = layerFE->mSnapshot->classifyCompositionForDebug( - layerFE->getHwcCompositionType()); - if (layerFE->mSnapshot->hasEffect()) { - compositedWorkload |= adpf::Workload::EFFECTS; - } + } + compositionSummary.push_back( + layerFE->mSnapshot->classifyCompositionForDebug(layerFE->getHwcCompositionType())); + if (layerFE->mSnapshot->hasEffect()) { + compositedWorkload |= adpf::Workload::EFFECTS; } if (compositionResult.lastClientCompositionFence) { @@ -3010,7 +3009,8 @@ CompositeResultsPerDisplay SurfaceFlinger::composite( SFTRACE_INSTANT_FOR_TRACK(WorkloadTracer::TRACK_NAME, ftl::Concat("Layers: ", layers.size(), " ", ftl::truncated<WorkloadTracer::COMPOSITION_SUMMARY_SIZE>( - compositionSummary.data())) + std::string_view(compositionSummary.begin(), + compositionSummary.size()))) .c_str()); mPowerAdvisor->setCompositedWorkload(compositedWorkload); |