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

Commit 7c6be10d authored by Craig Mautner's avatar Craig Mautner
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 c0f5bb70
Loading
Loading
Loading
Loading
+39 −38
Original line number Original line 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.InputManagerService;
import com.android.server.input.InputApplicationHandle;
import com.android.server.input.InputApplicationHandle;
import com.android.server.input.InputWindowHandle;
import com.android.server.input.InputWindowHandle;
import com.android.server.wm.WindowManagerService.AllWindowsIterator;


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


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


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


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


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


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


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


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

File changed.

Preview size limit exceeded, changes collapsed.