From d24b8e89f7f8808a3b4ab4e9b2ce014b57c5993f Mon Sep 17 00:00:00 2001 From: Nataniel Borges Date: Mon, 19 Dec 2022 14:40:50 +0000 Subject: [PATCH] Show occluded layers in SF view by default The rects view should include visible + occluded layers by default and only visible layers when the checkbox `only visible` is checked. Currently it shows only visible layers in both cases Bug: 262550235 Test: open a SF trace in winscope and check if occluded layer rects appear Change-Id: I288aa20a8f233439603d97d3d6e2bedbe26fab4b --- .../src/viewers/viewer_surface_flinger/presenter.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/winscope-ng/src/viewers/viewer_surface_flinger/presenter.ts b/tools/winscope-ng/src/viewers/viewer_surface_flinger/presenter.ts index 2f4e9838f..2ebcb46a9 100644 --- a/tools/winscope-ng/src/viewers/viewer_surface_flinger/presenter.ts +++ b/tools/winscope-ng/src/viewers/viewer_surface_flinger/presenter.ts @@ -121,7 +121,7 @@ export class Presenter { return rect; }) ?? []; this.displayIds = []; - const rects = this.entry.visibleLayers + const rects = this.getLayersForRectsView(); .sort((layer1: any, layer2: any) => { const absZLayer1 = layer1.zOrderPath; const absZLayer2 = layer2.zOrderPath; @@ -148,6 +148,14 @@ export class Presenter { return this.rectsToUiData(rects.concat(displayRects)); } + private getLayersForRectsView(): Layer[] { + const onlyVisible = this.hierarchyUserOptions["onlyVisible"]?.enabled ?? false; + // Show only visible layers or Visible + Occluded layers. Don't show all layers + // (flattenedLayers) because container layers are never meant to be displayed + return this.entry.flattenedLayers + .filter((it: any) => it.isVisible || (!onlyVisible && it.occludedBy.length > 0)); + } + private updateSelectedTreeUiData() { if (this.selectedHierarchyTree) { this.uiData.propertiesTree = this.getTreeWithTransformedProperties(this.selectedHierarchyTree);