Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java +4 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,10 @@ public class SplitscreenEventLogger { return mLoggerSessionId != null; } public boolean isEnterRequestedByDrag() { return mEnterReason == ENTER_REASON_DRAG; } /** * May be called before logEnter() to indicate that the session was started from a drag. */ Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +23 −8 Original line number Diff line number Diff line Loading @@ -505,6 +505,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, final WindowContainerTransaction wct = new WindowContainerTransaction(); options = resolveStartStage(STAGE_TYPE_UNDEFINED, position, options, wct); // If split still not active, apply windows bounds first to avoid surface reset to // wrong pos by SurfaceAnimator from wms. if (!mMainStage.isActive() && mLogger.isEnterRequestedByDrag()) { updateWindowBounds(mSplitLayout, wct); } wct.sendPendingIntent(intent, fillInIntent, options); mSyncQueue.queue(transition, WindowManager.TRANSIT_OPEN, wct); } Loading Loading @@ -1461,18 +1467,27 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } } } else if (isSideStage && hasChildren && !mMainStage.isActive()) { // TODO (b/238697912) : Add the validation to prevent entering non-recovered status onSplitScreenEnter(); final WindowContainerTransaction wct = new WindowContainerTransaction(); mSplitLayout.init(); if (mLogger.isEnterRequestedByDrag()) { prepareEnterSplitScreen(wct); } else { // TODO (b/238697912) : Add the validation to prevent entering non-recovered status onSplitScreenEnter(); mSplitLayout.setDividerAtBorder(mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT); mMainStage.activate(wct, true /* includingTopTask */); updateWindowBounds(mSplitLayout, wct); wct.reorder(mRootTaskInfo.token, true); wct.setForceTranslucent(mRootTaskInfo.token, false); } mSyncQueue.queue(wct); mSyncQueue.runInSync(t -> { if (mLogger.isEnterRequestedByDrag()) { updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */); } else { mSplitLayout.flingDividerToCenter(); } }); } if (mMainStageListener.mHasChildren && mSideStageListener.mHasChildren) { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java +4 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,10 @@ public class SplitscreenEventLogger { return mLoggerSessionId != null; } public boolean isEnterRequestedByDrag() { return mEnterReason == ENTER_REASON_DRAG; } /** * May be called before logEnter() to indicate that the session was started from a drag. */ Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +23 −8 Original line number Diff line number Diff line Loading @@ -505,6 +505,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, final WindowContainerTransaction wct = new WindowContainerTransaction(); options = resolveStartStage(STAGE_TYPE_UNDEFINED, position, options, wct); // If split still not active, apply windows bounds first to avoid surface reset to // wrong pos by SurfaceAnimator from wms. if (!mMainStage.isActive() && mLogger.isEnterRequestedByDrag()) { updateWindowBounds(mSplitLayout, wct); } wct.sendPendingIntent(intent, fillInIntent, options); mSyncQueue.queue(transition, WindowManager.TRANSIT_OPEN, wct); } Loading Loading @@ -1461,18 +1467,27 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } } } else if (isSideStage && hasChildren && !mMainStage.isActive()) { // TODO (b/238697912) : Add the validation to prevent entering non-recovered status onSplitScreenEnter(); final WindowContainerTransaction wct = new WindowContainerTransaction(); mSplitLayout.init(); if (mLogger.isEnterRequestedByDrag()) { prepareEnterSplitScreen(wct); } else { // TODO (b/238697912) : Add the validation to prevent entering non-recovered status onSplitScreenEnter(); mSplitLayout.setDividerAtBorder(mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT); mMainStage.activate(wct, true /* includingTopTask */); updateWindowBounds(mSplitLayout, wct); wct.reorder(mRootTaskInfo.token, true); wct.setForceTranslucent(mRootTaskInfo.token, false); } mSyncQueue.queue(wct); mSyncQueue.runInSync(t -> { if (mLogger.isEnterRequestedByDrag()) { updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */); } else { mSplitLayout.flingDividerToCenter(); } }); } if (mMainStageListener.mHasChildren && mSideStageListener.mHasChildren) { Loading