@@ -2856,18 +2856,20 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
28562856
28572857 // Tracks layer stacks of displays that are added to CompositionEngine output.
28582858 ui::DisplayMap<ui::LayerStack, ftl::Unit> outputLayerStacks;
2859- auto isOutputLayerStack = [&outputLayerStacks](DisplayId id, ui::LayerStack layerStack) {
2860- if (FlagManager::getInstance ().reject_dupe_layerstacks () &&
2861- outputLayerStacks.contains (layerStack)) {
2862- // TODO: remove log and DisplayId from params once reject_dupe_layerstacks flag is
2863- // removed
2864- ALOGD (" Existing layer stack ID %d output to another display %" PRIu64
2865- " , dropping display from outputs" ,
2866- layerStack.id , id.value );
2867- return true ;
2859+ auto isUniqueOutputLayerStack = [&outputLayerStacks](DisplayId id, ui::LayerStack layerStack) {
2860+ if (FlagManager::getInstance ().reject_dupe_layerstacks ()) {
2861+ if (layerStack != ui::INVALID_LAYER_STACK && outputLayerStacks.contains (layerStack)) {
2862+ // TODO: remove log and DisplayId from params once reject_dupe_layerstacks flag is
2863+ // removed
2864+ ALOGD (" Existing layer stack ID %d output to another display %" PRIu64
2865+ " , dropping display from outputs" ,
2866+ layerStack.id , id.value );
2867+ return false ;
2868+ }
28682869 }
2870+
28692871 outputLayerStacks.try_emplace (layerStack);
2870- return false ;
2872+ return true ;
28712873 };
28722874
28732875 // Add outputs for physical displays.
@@ -2876,7 +2878,7 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
28762878
28772879 if (const auto display = getCompositionDisplayLocked (id)) {
28782880 const auto layerStack = physicalDisplayLayerStacks.get (id)->get ();
2879- if (! isOutputLayerStack (display->getId (), layerStack)) {
2881+ if (isUniqueOutputLayerStack (display->getId (), layerStack)) {
28802882 refreshArgs.outputs .push_back (display);
28812883 }
28822884 }
@@ -2895,7 +2897,7 @@ CompositeResultsPerDisplay SurfaceFlinger::composite(
28952897
28962898 if (!refreshRate.isValid () ||
28972899 mScheduler ->isVsyncInPhase (pacesetterTarget.frameBeginTime (), refreshRate)) {
2898- if (! isOutputLayerStack (display->getId (), display->getLayerStack ())) {
2900+ if (isUniqueOutputLayerStack (display->getId (), display->getLayerStack ())) {
28992901 refreshArgs.outputs .push_back (display->getCompositionDisplay ());
29002902 }
29012903 }
0 commit comments