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

Commit f5f3f1b7 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Correct use of PooledConsumer in WM package to recycle.

We need to recycle the pooled consumer we use otherwise using pool
is no better than just creating an object for the consumer.

Test: Exising tests pass
Bug: N/A
Change-Id: I7025ac4a70f71b9fb7c7986ac096eeb58f5c191e
parent b814d6b3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2257,7 +2257,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
     */
    boolean pointWithinAppWindow(int x, int y) {
        final int[] targetWindowType = {-1};
        final Consumer fn = PooledLambda.obtainConsumer((w, nonArg) -> {
        final PooledConsumer fn = PooledLambda.obtainConsumer((w, nonArg) -> {
            if (targetWindowType[0] != -1) {
                return;
            }
@@ -2268,7 +2268,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
            }
        }, PooledLambda.__(WindowState.class), mTmpRect);
        forAllWindows(fn, true /* traverseTopToBottom */);
        ((PooledConsumer) fn).recycle();
        fn.recycle();
        return FIRST_APPLICATION_WINDOW <= targetWindowType[0]
                        && targetWindowType[0] <= LAST_APPLICATION_WINDOW;
    }
+21 −10
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ import com.android.internal.util.DumpUtils;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.LatencyTracker;
import com.android.internal.util.Preconditions;
import com.android.internal.util.function.pooled.PooledConsumer;
import com.android.internal.util.function.pooled.PooledLambda;
import com.android.internal.view.WindowManagerPolicyThread;
import com.android.server.AnimationThread;
@@ -433,8 +434,10 @@ public class WindowManagerService extends IWindowManager.Stub
        public void onVrStateChanged(boolean enabled) {
            synchronized (mGlobalLock) {
                mVrModeEnabled = enabled;
                mRoot.forAllDisplayPolicies(PooledLambda.obtainConsumer(
                        DisplayPolicy::onVrStateChangedLw, PooledLambda.__(), enabled));
                final PooledConsumer c = PooledLambda.obtainConsumer(
                        DisplayPolicy::onVrStateChangedLw, PooledLambda.__(), enabled);
                mRoot.forAllDisplayPolicies(c);
                c.recycle();
            }
        }
    };
@@ -827,9 +830,11 @@ public class WindowManagerService extends IWindowManager.Stub
            }
            mPointerLocationEnabled = enablePointerLocation;
            synchronized (mGlobalLock) {
                mRoot.forAllDisplayPolicies(PooledLambda.obtainConsumer(
                final PooledConsumer c = PooledLambda.obtainConsumer(
                        DisplayPolicy::setPointerLocationEnabled, PooledLambda.__(),
                        mPointerLocationEnabled));
                        mPointerLocationEnabled);
                mRoot.forAllDisplayPolicies(c);
                c.recycle();
            }
        }

@@ -2797,8 +2802,10 @@ public class WindowManagerService extends IWindowManager.Stub

    @Override
    public void onPowerKeyDown(boolean isScreenOn) {
        mRoot.forAllDisplayPolicies(PooledLambda.obtainConsumer(
                DisplayPolicy::onPowerKeyDown, PooledLambda.__(), isScreenOn));
        final PooledConsumer c = PooledLambda.obtainConsumer(
                DisplayPolicy::onPowerKeyDown, PooledLambda.__(), isScreenOn);
        mRoot.forAllDisplayPolicies(c);
        c.recycle();
    }

    @Override
@@ -5623,8 +5630,10 @@ public class WindowManagerService extends IWindowManager.Stub
                    + android.Manifest.permission.STATUS_BAR);
        }
        synchronized (mGlobalLock) {
            mRoot.forAllDisplayPolicies(PooledLambda.obtainConsumer(
                    DisplayPolicy::setForceShowSystemBars, PooledLambda.__(), show));
            final PooledConsumer c = PooledLambda.obtainConsumer(
                    DisplayPolicy::setForceShowSystemBars, PooledLambda.__(), show);
            mRoot.forAllDisplayPolicies(c);
            c.recycle();
        }
    }

@@ -7564,8 +7573,10 @@ public class WindowManagerService extends IWindowManager.Stub
    void onLockTaskStateChanged(int lockTaskState) {
        // TODO: pass in displayId to determine which display the lock task state changed
        synchronized (mGlobalLock) {
            mRoot.forAllDisplayPolicies(PooledLambda.obtainConsumer(
                    DisplayPolicy::onLockTaskStateChangedLw, PooledLambda.__(), lockTaskState));
            final PooledConsumer c = PooledLambda.obtainConsumer(
                    DisplayPolicy::onLockTaskStateChangedLw, PooledLambda.__(), lockTaskState);
            mRoot.forAllDisplayPolicies(c);
            c.recycle();
        }
    }