Merge "Handle race between creating and assigning RemoteTargetHandles" into sc-v2-dev
diff --git a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
index dc04016..7ef4d19 100644
--- a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
+++ b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
@@ -16,9 +16,8 @@
package com.android.quickstep;
-import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
-
import android.content.Context;
+import android.util.Log;
import androidx.annotation.Nullable;
@@ -34,7 +33,9 @@
* {@link TaskViewSimulator}
*/
public class RemoteTargetGluer {
- private final RemoteTargetHandle[] mRemoteTargetHandles;
+ private static final String TAG = "RemoteTargetGluer";
+
+ private RemoteTargetHandle[] mRemoteTargetHandles;
private SplitConfigurationOptions.StagedSplitBounds mStagedSplitBounds;
/**
@@ -93,6 +94,13 @@
public RemoteTargetHandle[] assignTargetsForSplitScreen(RemoteAnimationTargets targets) {
int[] splitIds = LauncherSplitScreenListener.INSTANCE.getNoCreate()
.getRunningSplitTaskIds();
+ if (splitIds.length == 0 && mRemoteTargetHandles.length > 1) {
+ // There's a chance that between the creation of this class and assigning targets,
+ // LauncherSplitScreenListener may have received callback that removes split
+ mRemoteTargetHandles = new RemoteTargetHandle[]{mRemoteTargetHandles[0]};
+ Log.w(TAG, "splitTaskIds changed between creation and assignment");
+ }
+
RemoteAnimationTargetCompat primaryTaskTarget;
RemoteAnimationTargetCompat secondaryTaskTarget;
if (mRemoteTargetHandles.length == 1) {