Merge "Dispatch overlay change to WindowManager"
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 3dc237d..c9b9a40 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -25345,6 +25345,10 @@
}
}
}
+ if (updateFrameworkRes && mWindowManager != null) {
+ ActivityThread.currentActivityThread().getExecutor().execute(
+ mWindowManager::onOverlayChanged);
+ }
}
/**
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index f722542..0470607 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -161,6 +161,7 @@
import android.app.UiModeManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
+import android.content.ComponentCallbacks;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -2741,6 +2742,11 @@
}
@Override
+ public void onOverlayChangedLw() {
+ onConfigurationChanged();
+ }
+
+ @Override
public void onConfigurationChanged() {
// TODO(multi-display): Define policy for secondary displays.
Context uiContext = getSystemUiContext();
diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
index 38ede4d..64a280c 100644
--- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java
+++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
@@ -176,6 +176,11 @@
void onKeyguardOccludedChangedLw(boolean occluded);
/**
+ * Called when the resource overlays change.
+ */
+ default void onOverlayChangedLw() {}
+
+ /**
* Interface to the Window Manager state associated with a particular
* window. You can hold on to an instance of this interface from the call
* to prepareAddWindow() until removeWindow().
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index e4fe888..7b33533 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -6596,6 +6596,13 @@
}
}
+ public void onOverlayChanged() {
+ synchronized (mWindowMap) {
+ mPolicy.onOverlayChangedLw();
+ requestTraversal();
+ }
+ }
+
public void onDisplayChanged(int displayId) {
synchronized (mWindowMap) {
final DisplayContent displayContent = mRoot.getDisplayContentOrCreate(displayId);