diff options
| author | 2018-01-17 12:54:50 +0100 | |
|---|---|---|
| committer | 2018-01-17 12:55:34 +0100 | |
| commit | e1d68cda9dde91f73c1c93ea8376fd2e14fbd5d7 (patch) | |
| tree | 73b9821164216d09ed5fa28e119edb9b5a9954cb | |
| parent | 7d0e1f8065cc618ed8931f070777cda366e65fd0 (diff) | |
DisplayCutout: Reload displays when resource overlays change
This allows the DisplayManager to pick up changes to the
DisplayCutout resource, which is used to implement emulation
of the overlay.
Bug: x
Test: adb shell overlay enable ...; verify cutout is picked up immediately and not only after toggling the display
Change-Id: I0fa2d50366a17231f45990d2d3854321d48653f0
3 files changed, 15 insertions, 0 deletions
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java index 3f6dd2e757ed..078958ad881a 100644 --- a/core/java/android/hardware/display/DisplayManagerInternal.java +++ b/core/java/android/hardware/display/DisplayManagerInternal.java @@ -179,6 +179,11 @@ public abstract class DisplayManagerInternal {      public abstract void persistBrightnessSliderEvents();      /** +     * Notifies the display manager that resource overlays have changed. +     */ +    public abstract void onOverlayChanged(); + +    /**       * Describes the requested power state of the display.       *       * This object is intended to describe the general characteristics of the diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 02e4fe00f893..a55fec5246d3 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -2009,5 +2009,14 @@ public final class DisplayManagerService extends SystemService {                  mDisplayPowerController.persistBrightnessSliderEvents();              }          } + +        @Override +        public void onOverlayChanged() { +            synchronized (mSyncRoot) { +                if (updateLogicalDisplaysLocked()) { +                    scheduleTraversalLocked(false); +                } +            } +        }      }  } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d2ab9dfa68d1..58673dbe3cd8 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -6600,6 +6600,7 @@ public class WindowManagerService extends IWindowManager.Stub      public void onOverlayChanged() {          synchronized (mWindowMap) {              mPolicy.onOverlayChangedLw(); +            mDisplayManagerInternal.onOverlayChanged();              requestTraversal();          }      }  |