summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 01a46b311740..376595b95c9d 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1887,6 +1887,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
return selectedTheme;
}
+ // Whether this activity launched from system or Home or SystemUI
+ private boolean launchedFromSystemSurface() {
+ return launchedFromUid == Process.SYSTEM_UID || launchedFromUid == Process.ROOT_UID
+ || launchedFromHomeProcess
+ || mAtmService.getSysUiServiceComponentLocked().getPackageName().equals(
+ launchedFromPackage);
+ }
+
private boolean validateStartingWindowTheme(String pkg, int theme) {
// If this is a translucent window, then don't show a starting window -- the current
// effect (a full-screen opaque starting window that fades away to the real contents
@@ -1913,7 +1921,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
"Translucent=%s Floating=%s ShowWallpaper=%s Disable=%s",
windowIsTranslucent, windowIsFloating, windowShowWallpaper,
windowDisableStarting);
- if (windowIsTranslucent || windowIsFloating || windowDisableStarting) {
+ // If this activity is launched from system surface, ignore windowDisableStarting
+ if (windowIsTranslucent || windowIsFloating
+ || (windowDisableStarting && !launchedFromSystemSurface())) {
return false;
}
if (windowShowWallpaper