Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5892fc5d authored by Craig Mautner's avatar Craig Mautner Committed by The Android Automerger
Browse files

Remove iterators (DO NOT MERGE)

Remove DisplayContentsIterator and AllWindowsIterator. These were cute
but they take up valuable resources. Iterate over ArrayList members
in their place.

Change-Id: Ie0c537608532cfb36f34d976cc6eacd21bad98cd
parent d67c55b8
Loading
Loading
Loading
Loading
+39 −38
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.wm;
import com.android.server.input.InputManagerService;
import com.android.server.input.InputApplicationHandle;
import com.android.server.input.InputWindowHandle;
import com.android.server.wm.WindowManagerService.AllWindowsIterator;

import android.app.ActivityManagerNative;
import android.graphics.Rect;
@@ -31,7 +30,6 @@ import android.view.InputChannel;
import android.view.KeyEvent;
import android.view.WindowManager;

import java.util.ArrayList;
import java.util.Arrays;

final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
@@ -249,10 +247,12 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
        }

        // Add all windows on the default display.
        final AllWindowsIterator iterator = mService.new AllWindowsIterator(
                WindowManagerService.REVERSE_ITERATOR);
        while (iterator.hasNext()) {
            final WindowState child = iterator.next();
        final int numDisplays = mService.mDisplayContents.size();
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
            final WindowList windows =
                    mService.mDisplayContents.valueAt(displayNdx).getWindowList();
            for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
                final WindowState child = windows.get(winNdx);
                final InputChannel inputChannel = child.mInputChannel;
                final InputWindowHandle inputWindowHandle = child.mInputWindowHandle;
                if (inputChannel == null || inputWindowHandle == null || child.mRemoved) {
@@ -290,6 +290,7 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
                            isVisible, hasFocus, hasWallpaper);
                }
            }
        }

        // Send windows to native code.
        mService.mInputManager.setInputWindows(mInputWindowHandles);
+3 −4
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.view.SurfaceControl;
import android.view.WindowManagerPolicy;
import android.view.animation.Animation;

import com.android.server.wm.WindowManagerService.DisplayContentsIterator;
import com.android.server.wm.WindowManagerService.LayoutFields;

import java.io.PrintWriter;
@@ -627,9 +626,9 @@ public class WindowAnimator {
        }

        boolean hasPendingLayoutChanges = false;
        DisplayContentsIterator iterator = mService.new DisplayContentsIterator();
        while (iterator.hasNext()) {
            final DisplayContent displayContent = iterator.next();
        final int numDisplays = mService.mDisplayContents.size();
        for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
            final DisplayContent displayContent = mService.mDisplayContents.valueAt(displayNdx);
            final int pendingChanges = getPendingLayoutChanges(displayContent.getDisplayId());
            if ((pendingChanges & WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER) != 0) {
                mBulkUpdateParams |= SET_WALLPAPER_ACTION_PENDING;
+163 −207

File changed.

Preview size limit exceeded, changes collapsed.