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
This commit is contained in:
Jerry Chang
2022-09-05 10:30:14 +00:00
parent fc9ccbb8a0
commit 768ee2c04c

View File

@@ -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);
}