Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f1bb995 authored by Jerry Chang's avatar Jerry Chang Committed by Android Build Coastguard Worker
Browse files

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
(cherry picked from commit 768ee2c0)
Merged-In: Ie186cfa3b1406514ce8c33cd7321b8b9df40af26
parent 88b3499a
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -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);
                }