summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2018-01-17 12:54:50 +0100
committer Adrian Roos <roosa@google.com> 2018-01-17 12:55:34 +0100
commite1d68cda9dde91f73c1c93ea8376fd2e14fbd5d7 (patch)
tree73b9821164216d09ed5fa28e119edb9b5a9954cb
parent7d0e1f8065cc618ed8931f070777cda366e65fd0 (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
-rw-r--r--core/java/android/hardware/display/DisplayManagerInternal.java5
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java9
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java1
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();
}
}