summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Jerry Chang <chenghsiuchang@google.com> 2022-09-05 10:30:14 +0000
committer Jerry Chang <chenghsiuchang@google.com> 2022-09-05 10:34:39 +0000
commit768ee2c04cc8ca9bb48b7564920cb88a98c86387 (patch)
tree475f602cf0f7b8e8a535f62c72ab3f25d9639e44 /libs
parentfc9ccbb8a0ac6071ca8413dfc17d28c9e1207a9e (diff)
Fix no response after entered split screen
Make sure to update stage root's bounds and reset the surface position of opening apps to prevent double offset instead. Fix: 245055674 Bug: 244671191 Test: enter split screen by long pressing on shortcut, anotehr side can receive touch events after entered split screen. Change-Id: Ie186cfa3b1406514ce8c33cd7321b8b9df40af26
Diffstat (limited to 'libs')
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java19
1 files changed, 9 insertions, 10 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index 8d405f4f6fcf..199007d7f577 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -589,17 +589,17 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
return;
}
- // The surfaces of splitting tasks were placed with window bounds when preparing the
- // transition, so update divider surface separately.
- final RemoteAnimationTarget dividerTarget = getDividerBarLegacyTarget();
- mSplitLayout.getRefDividerBounds(mTempRect1);
- t.setLayer(dividerTarget.leash, Integer.MAX_VALUE)
- .setPosition(dividerTarget.leash, mTempRect1.left, mTempRect1.top);
- setDividerVisibility(true, t);
+ // Wrap the divider bar into non-apps target to animate together.
+ nonApps = ArrayUtils.appendElement(RemoteAnimationTarget.class, nonApps,
+ getDividerBarLegacyTarget());
+ updateSurfaceBounds(mSplitLayout, t, false);
+ setDividerVisibility(true, t);
for (int i = 0; i < apps.length; ++i) {
if (apps[i].mode == MODE_OPENING) {
t.show(apps[i].leash);
+ // Reset the surface position of the opening app to prevent double-offset.
+ t.setPosition(apps[i].leash, 0, 0);
}
}
t.apply();
@@ -614,9 +614,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
};
Transitions.setRunningRemoteTransitionDelegate(adapter.getCallingApplication());
try {
- adapter.getRunner().onAnimationStart(transit, apps, wallpapers,
- ArrayUtils.appendElement(RemoteAnimationTarget.class, nonApps,
- dividerTarget), wrapCallback);
+ adapter.getRunner().onAnimationStart(
+ transit, apps, wallpapers, nonApps, wrapCallback);
} catch (RemoteException e) {
Slog.e(TAG, "Error starting remote animation", e);
}