Merge "Handle task visibility change to show the surface" into udc-dev
This commit is contained in:
@@ -129,6 +129,7 @@ public class FullscreenTaskListener implements ShellTaskOrganizer.TaskListener {
|
||||
public void onTaskInfoChanged(RunningTaskInfo taskInfo) {
|
||||
final State state = mTasks.get(taskInfo.taskId);
|
||||
final Point oldPositionInParent = state.mTaskInfo.positionInParent;
|
||||
boolean oldVisible = state.mTaskInfo.isVisible;
|
||||
|
||||
if (mWindowDecorViewModelOptional.isPresent()) {
|
||||
mWindowDecorViewModelOptional.get().onTaskInfoChanged(taskInfo);
|
||||
@@ -138,12 +139,18 @@ public class FullscreenTaskListener implements ShellTaskOrganizer.TaskListener {
|
||||
updateRecentsForVisibleFullscreenTask(taskInfo);
|
||||
|
||||
final Point positionInParent = state.mTaskInfo.positionInParent;
|
||||
if (!oldPositionInParent.equals(state.mTaskInfo.positionInParent)) {
|
||||
boolean positionInParentChanged = !oldPositionInParent.equals(positionInParent);
|
||||
boolean becameVisible = !oldVisible && state.mTaskInfo.isVisible;
|
||||
|
||||
if (becameVisible || positionInParentChanged) {
|
||||
mSyncQueue.runInSync(t -> {
|
||||
if (!state.mLeash.isValid()) {
|
||||
// Task vanished before sync completion
|
||||
return;
|
||||
}
|
||||
if (becameVisible) {
|
||||
t.show(state.mLeash);
|
||||
}
|
||||
t.setPosition(state.mLeash, positionInParent.x, positionInParent.y);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user