From 37fc6b90ca27003d18551f262b38ed6b773d177b Mon Sep 17 00:00:00 2001 From: Chilun Date: Wed, 14 Apr 2021 12:33:38 +0800 Subject: [PATCH] Re-route to default display if the home activity doesn't support multi-display If a user operates on secondary display to change the default home, system will launch the home activity on secondary display even if the home activity is not support multi-display. Add more conditions to re-route to default display if the home activity doesn't support multi-display when deciding the prefer task display area. Bug: 179329207 Test: atest ActivityStarterTests Change-Id: I32e3f369f03f60c6e8891f2876272c5e6b375eb5 --- .../com/android/server/wm/TaskLaunchParamsModifier.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index dff621c5871a0..625cff3409124 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -439,6 +439,13 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { taskDisplayArea = mSupervisor.mRootWindowContainer.getDefaultTaskDisplayArea(); } + // Re-route to default display if the home activity doesn't support multi-display + if (taskDisplayArea != null && activityRecord.isActivityTypeHome() + && !mSupervisor.mRootWindowContainer.canStartHomeOnDisplayArea(activityRecord.info, + taskDisplayArea, false /* allowInstrumenting */)) { + taskDisplayArea = mSupervisor.mRootWindowContainer.getDefaultTaskDisplayArea(); + } + return (taskDisplayArea != null) ? taskDisplayArea : getFallbackDisplayAreaForActivity(activityRecord, request);