diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java index 4065b98ab0c8a..02055237c2b3b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java @@ -110,6 +110,8 @@ public class ShadeListBuilder implements Dumpable, PipelineDumpable { private final PipelineState mPipelineState = new PipelineState(); private final Map mGroups = new ArrayMap<>(); private Collection mAllEntries = Collections.emptyList(); + @Nullable + private Collection mPendingEntries = null; private int mIterationCount = 0; private final List mNotifPreGroupFilters = new ArrayList<>(); @@ -317,11 +319,9 @@ public class ShadeListBuilder implements Dumpable, PipelineDumpable { @Override public void onBuildList(Collection entries, String reason) { Assert.isMainThread(); - mPipelineState.requireIsBefore(STATE_BUILD_STARTED); - + mPendingEntries = new ArrayList<>(entries); mLogger.logOnBuildList(reason); - mAllEntries = entries; - scheduleRebuild(/* reentrant = */ false); + rebuildListIfBefore(STATE_BUILD_STARTED); } }; @@ -398,6 +398,11 @@ public class ShadeListBuilder implements Dumpable, PipelineDumpable { Trace.beginSection("ShadeListBuilder.buildList"); mPipelineState.requireIsBefore(STATE_BUILD_STARTED); + if (mPendingEntries != null) { + mAllEntries = mPendingEntries; + mPendingEntries = null; + } + if (!mNotifStabilityManager.isPipelineRunAllowed()) { mLogger.logPipelineRunSuppressed(); Trace.endSection();