Apply split-screen resize on sync queue

This keeps it synchronized with dismissal and thus avoids
a race between pending and sync transaction application

Bug: 170801863
Test: launch a forced-multiwindow sizecompat app in split and
      then dismiss split to that app. App should not be cropped.
Change-Id: I686605928ededcd5c5d032789fd883e17f437948
Merged-in: I4d89be443af5616174ea44e62774133e3b99597c
This commit is contained in:
Evan Rosky
2021-02-10 16:08:29 -08:00
parent ed6a63240f
commit a3f107c0e8
2 changed files with 4 additions and 5 deletions

View File

@@ -618,7 +618,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
mEntranceAnimationRunning = false;
mExitAnimationRunning = false;
if (!dismissed && !wasMinimizeInteraction) {
WindowManagerProxy.applyResizeSplits(snapTarget.position, mSplitLayout);
mWindowManagerProxy.applyResizeSplits(snapTarget.position, mSplitLayout);
}
if (mCallback != null) {
mCallback.onDraggingEnd();
@@ -889,7 +889,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
t.hide(sc).apply();
mTiles.releaseTransaction(t);
int midPos = mSplitLayout.getSnapAlgorithm().getMiddleTarget().position;
WindowManagerProxy.applyResizeSplits(midPos, mSplitLayout);
mWindowManagerProxy.applyResizeSplits(midPos, mSplitLayout);
}
public void setMinimizedDockStack(boolean minimized, long animDuration,

View File

@@ -37,7 +37,6 @@ import android.view.WindowManagerGlobal;
import android.window.TaskOrganizer;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
import android.window.WindowOrganizer;
import com.android.internal.annotations.GuardedBy;
import com.android.systemui.TransactionPool;
@@ -112,10 +111,10 @@ public class WindowManagerProxy {
mExecutor.execute(mSetTouchableRegionRunnable);
}
static void applyResizeSplits(int position, SplitDisplayLayout splitLayout) {
void applyResizeSplits(int position, SplitDisplayLayout splitLayout) {
WindowContainerTransaction t = new WindowContainerTransaction();
splitLayout.resizeSplits(position, t);
WindowOrganizer.applyTransaction(t);
applySyncTransaction(t);
}
private static boolean getHomeAndRecentsTasks(List<ActivityManager.RunningTaskInfo> out,