Revert "Don't copy null surface control and remove lingering references to leashes"

This reverts commit c6ab8e8cc6.

Reason for revert: Breaking CtsWindowManagerDeviceTestCases

Change-Id: I4a4f3bf96061757acf4f68ced20ffa7351f60859
This commit is contained in:
Bidhya Sharma
2022-07-07 00:27:12 +00:00
parent c6ab8e8cc6
commit ad41a1e805
11 changed files with 9 additions and 62 deletions

View File

@@ -85,8 +85,6 @@ public class RootDisplayAreaOrganizer extends DisplayAreaOrganizer {
}
mDisplayAreasInfo.remove(displayId);
mLeashes.get(displayId).release();
mLeashes.remove(displayId);
}
@Override

View File

@@ -529,11 +529,7 @@ public class ShellTaskOrganizer extends TaskOrganizer implements
}
final int taskId = taskInfo.taskId;
final TaskAppearedInfo appearedInfo = mTasks.get(taskId);
final TaskListener listener = getTaskListener(appearedInfo.getTaskInfo());
if (appearedInfo.getLeash() != null) {
appearedInfo.getLeash().release();
}
final TaskListener listener = getTaskListener(mTasks.get(taskId).getTaskInfo());
mTasks.remove(taskId);
if (listener != null) {
listener.onTaskVanished(taskInfo);

View File

@@ -128,10 +128,9 @@ class HideDisplayCutoutOrganizer extends DisplayAreaOrganizer {
final WindowContainerTransaction wct = new WindowContainerTransaction();
final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
final SurfaceControl leash = mDisplayAreaMap.get(displayAreaInfo.token);
applyBoundsAndOffsets(displayAreaInfo.token, leash, wct, t);
applyBoundsAndOffsets(
displayAreaInfo.token, mDisplayAreaMap.get(displayAreaInfo.token), wct, t);
applyTransaction(wct, t);
leash.release();
mDisplayAreaMap.remove(displayAreaInfo.token);
}
}

View File

@@ -159,10 +159,6 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer {
@Override
public void onDisplayAreaVanished(@NonNull DisplayAreaInfo displayAreaInfo) {
final SurfaceControl leash = mDisplayAreaTokenMap.get(displayAreaInfo.token);
if (leash != null) {
leash.release();
}
mDisplayAreaTokenMap.remove(displayAreaInfo.token);
}

View File

@@ -943,7 +943,6 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
mPipBoundsState.setBounds(new Rect());
mPipUiEventLoggerLogger.setTaskInfo(null);
mMainExecutor.executeDelayed(() -> mPipMenuController.detach(), 0);
mLeash = null;
if (info.displayId != Display.DEFAULT_DISPLAY && mOnDisplayIdChangeCallback != null) {
mOnDisplayIdChangeCallback.accept(Display.DEFAULT_DISPLAY);

View File

@@ -434,15 +434,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
}
RemoteAnimationTarget[] onStartingSplitLegacy(RemoteAnimationTarget[] apps) {
try {
return reparentSplitTasksForAnimation(apps, false /*splitExpectedToBeVisible*/);
} finally {
for (RemoteAnimationTarget appTarget : apps) {
if (appTarget.leash != null) {
appTarget.leash.release();
}
}
}
return reparentSplitTasksForAnimation(apps, false /*splitExpectedToBeVisible*/);
}
private RemoteAnimationTarget[] reparentSplitTasksForAnimation(RemoteAnimationTarget[] apps,

View File

@@ -1022,7 +1022,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
mRootTaskInfo = null;
mRootTaskLeash = null;
}

View File

@@ -242,7 +242,6 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener {
if (mRootTaskInfo.taskId == taskId) {
mCallbacks.onRootTaskVanished();
mRootTaskInfo = null;
mRootLeash = null;
mSyncQueue.runInSync(t -> {
t.remove(mDimLayer);
mSplitDecorManager.release(t);

View File

@@ -46,7 +46,6 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.util.SparseArray;
import android.view.SurfaceControl;
import android.view.SurfaceSession;
import android.window.ITaskOrganizer;
import android.window.ITaskOrganizerController;
import android.window.TaskAppearedInfo;
@@ -138,24 +137,12 @@ public class ShellTaskOrganizerTests {
}
@Test
public void testRegisterOrganizer_sendRegisterTaskOrganizer() throws RemoteException {
public void registerOrganizer_sendRegisterTaskOrganizer() throws RemoteException {
mOrganizer.registerOrganizer();
verify(mTaskOrganizerController).registerTaskOrganizer(any(ITaskOrganizer.class));
}
@Test
public void testTaskLeashReleasedAfterVanished() throws RemoteException {
RunningTaskInfo taskInfo = createTaskInfo(1, WINDOWING_MODE_MULTI_WINDOW);
SurfaceControl taskLeash = new SurfaceControl.Builder(new SurfaceSession())
.setName("task").build();
mOrganizer.registerOrganizer();
mOrganizer.onTaskAppeared(taskInfo, taskLeash);
assertTrue(taskLeash.isValid());
mOrganizer.onTaskVanished(taskInfo);
assertTrue(!taskLeash.isValid());
}
@Test
public void testOneListenerPerType() {
mOrganizer.addListenerForType(new TrackingTaskListener(), TASK_LISTENER_TYPE_MULTI_WINDOW);

View File

@@ -382,12 +382,11 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
mService.mRootWindowContainer.forAllTasks((task) -> {
boolean returnTask = !task.mCreatedByOrganizer;
task.updateTaskOrganizerState(returnTask /* skipTaskAppeared */);
// It is possible for the task to not yet have a surface control, so ensure that
// the update succeeded in setting the organizer for the task before returning
if (task.isOrganized() && returnTask) {
SurfaceControl taskLeash = state.addTaskWithoutCallback(task,
if (returnTask) {
SurfaceControl outSurfaceControl = state.addTaskWithoutCallback(task,
"TaskOrganizerController.registerTaskOrganizer");
taskInfos.add(new TaskAppearedInfo(task.getTaskInfo(), taskLeash));
taskInfos.add(
new TaskAppearedInfo(task.getTaskInfo(), outSurfaceControl));
}
});
};

View File

@@ -457,23 +457,6 @@ public class WindowOrganizerTests extends WindowTestsBase {
.onTaskAppeared(any(RunningTaskInfo.class), any(SurfaceControl.class));
}
@Test
public void testRegisterTaskOrganizerWithExistingTasks_noSurfaceControl()
throws RemoteException {
final Task rootTask = createRootTask();
final Task task = createTask(rootTask);
final Task rootTask2 = createRootTask();
final Task task2 = createTask(rootTask2);
rootTask2.setSurfaceControl(null);
ArrayList<TaskAppearedInfo> existingTasks = new ArrayList<>();
final ITaskOrganizer organizer = registerMockOrganizer(existingTasks);
assertContainsTasks(existingTasks, rootTask);
// Verify we don't get onTaskAppeared if we are returned the tasks
verify(organizer, never())
.onTaskAppeared(any(RunningTaskInfo.class), any(SurfaceControl.class));
}
@Test
public void testTaskTransaction() {
removeGlobalMinSizeRestriction();