diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 918729d114d3a..61685fc9635cc 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9383,30 +9383,6 @@ public class WindowManagerService extends IWindowManager.Stub mSurfaceSyncGroupController.markSyncGroupReady(syncGroupToken); } - private ArraySet getVisibleActivityRecords(int displayId) { - ArraySet result = new ArraySet<>(); - synchronized (mGlobalLock) { - ArraySet addedActivities = new ArraySet<>(); - DisplayContent displayContent = mRoot.getDisplayContent(displayId); - if (displayContent != null) { - displayContent.forAllWindows( - (w) -> { - if (w.isVisible() - && w.isDisplayed() - && w.mActivityRecord != null - && !addedActivities.contains( - w.mActivityRecord.mActivityComponent) - && w.mActivityRecord.isVisible() - && w.isVisibleNow()) { - addedActivities.add(w.mActivityRecord.mActivityComponent); - result.add(w.mActivityRecord); - } - }, - true /* traverseTopToBottom */); - } - } - return result; - } /** * Must be called when a screenshot is taken via hardware chord. @@ -9422,14 +9398,20 @@ public class WindowManagerService extends IWindowManager.Stub throw new SecurityException("Requires STATUS_BAR_SERVICE permission"); } synchronized (mGlobalLock) { - ArraySet notifiedApps = new ArraySet<>(); - ArraySet visibleApps = getVisibleActivityRecords(displayId); - for (ActivityRecord ar : visibleApps) { - if (ar.isRegisteredForScreenCaptureCallback()) { - ar.reportScreenCaptured(); - notifiedApps.add(ar.mActivityComponent); - } + final DisplayContent displayContent = mRoot.getDisplayContent(displayId); + if (displayContent == null) { + return new ArrayList<>(); } + ArraySet notifiedApps = new ArraySet<>(); + displayContent.forAllActivities( + (ar) -> { + if (!notifiedApps.contains(ar.mActivityComponent) && ar.isVisible() + && ar.isRegisteredForScreenCaptureCallback()) { + ar.reportScreenCaptured(); + notifiedApps.add(ar.mActivityComponent); + } + }, + true /* traverseTopToBottom */); return List.copyOf(notifiedApps); } }