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

Commit 0c10e4b7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "DisplayCutout: Actually reload displays when resource overlays change"

parents 5961fad0 898ec385
Loading
Loading
Loading
Loading
+14 −3
Original line number Original line Diff line number Diff line
@@ -294,6 +294,7 @@ import android.database.ContentObserver;
import android.graphics.Bitmap;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Rect;
import android.hardware.display.DisplayManagerInternal;
import android.location.LocationManager;
import android.location.LocationManager;
import android.media.audiofx.AudioEffect;
import android.media.audiofx.AudioEffect;
import android.metrics.LogMaker;
import android.metrics.LogMaker;
@@ -474,6 +475,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.Objects;
import java.util.Set;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicLong;
@@ -25357,9 +25359,18 @@ public class ActivityManagerService extends IActivityManager.Stub
                }
                }
            }
            }
        }
        }
        if (updateFrameworkRes && mWindowManager != null) {
        if (updateFrameworkRes) {
            ActivityThread.currentActivityThread().getExecutor().execute(
            // Update system server components that need to know about changed overlays. Because the
                    mWindowManager::onOverlayChanged);
            // overlay is applied in ActivityThread, we need to serialize through its thread too.
            final Executor executor = ActivityThread.currentActivityThread().getExecutor();
            final DisplayManagerInternal display =
                    LocalServices.getService(DisplayManagerInternal.class);
            if (display != null) {
                executor.execute(display::onOverlayChanged);
            }
            if (mWindowManager != null) {
                executor.execute(mWindowManager::onOverlayChanged);
            }
        }
        }
    }
    }
+3 −0
Original line number Original line Diff line number Diff line
@@ -143,6 +143,9 @@ abstract class DisplayDevice {
    public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) {
    public void requestDisplayModesInTransactionLocked(int colorMode, int modeId) {
    }
    }


    public void onOverlayChangedLocked() {
    }

    /**
    /**
     * Sets the display layer stack while in a transaction.
     * Sets the display layer stack while in a transaction.
     */
     */
+2 −2
Original line number Original line Diff line number Diff line
@@ -2019,8 +2019,8 @@ public final class DisplayManagerService extends SystemService {
        @Override
        @Override
        public void onOverlayChanged() {
        public void onOverlayChanged() {
            synchronized (mSyncRoot) {
            synchronized (mSyncRoot) {
                if (updateLogicalDisplaysLocked()) {
                for (int i = 0; i < mDisplayDevices.size(); i++) {
                    scheduleTraversalLocked(false);
                    mDisplayDevices.get(i).onOverlayChangedLocked();
                }
                }
            }
            }
        }
        }
+5 −0
Original line number Original line Diff line number Diff line
@@ -600,6 +600,11 @@ final class LocalDisplayAdapter extends DisplayAdapter {
            }
            }
        }
        }


        @Override
        public void onOverlayChangedLocked() {
            updateDeviceInfoLocked();
        }

        public boolean requestModeInTransactionLocked(int modeId) {
        public boolean requestModeInTransactionLocked(int modeId) {
            if (modeId == 0) {
            if (modeId == 0) {
                modeId = mDefaultModeId;
                modeId = mDefaultModeId;
+1 −1
Original line number Original line Diff line number Diff line
@@ -6613,7 +6613,7 @@ public class WindowManagerService extends IWindowManager.Stub
    public void onOverlayChanged() {
    public void onOverlayChanged() {
        synchronized (mWindowMap) {
        synchronized (mWindowMap) {
            mPolicy.onOverlayChangedLw();
            mPolicy.onOverlayChangedLw();
            mDisplayManagerInternal.onOverlayChanged();
            getDefaultDisplayContentLocked().updateDisplayInfo();
            requestTraversal();
            requestTraversal();
        }
        }
    }
    }