Merge "Fix flicker while resizing split screen" into tm-dev
This commit is contained in:
@@ -5524,8 +5524,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @return {@code true} if this activity should be made visible. */
|
/** @return {@code true} if this activity should be made visible. */
|
||||||
private boolean shouldBeVisible(boolean behindFullscreenActivity, boolean ignoringKeyguard) {
|
private boolean shouldBeVisible(boolean behindOccludedContainer, boolean ignoringKeyguard) {
|
||||||
updateVisibilityIgnoringKeyguard(behindFullscreenActivity);
|
updateVisibilityIgnoringKeyguard(behindOccludedContainer);
|
||||||
|
|
||||||
if (ignoringKeyguard) {
|
if (ignoringKeyguard) {
|
||||||
return visibleIgnoringKeyguard;
|
return visibleIgnoringKeyguard;
|
||||||
@@ -5583,20 +5583,20 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
return differentUidOverlayActivity != null;
|
return differentUidOverlayActivity != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateVisibilityIgnoringKeyguard(boolean behindFullscreenActivity) {
|
void updateVisibilityIgnoringKeyguard(boolean behindOccludedContainer) {
|
||||||
visibleIgnoringKeyguard = (!behindFullscreenActivity || mLaunchTaskBehind)
|
visibleIgnoringKeyguard = (!behindOccludedContainer || mLaunchTaskBehind)
|
||||||
&& showToCurrentUser();
|
&& showToCurrentUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean shouldBeVisible() {
|
boolean shouldBeVisible() {
|
||||||
final Task rootTask = getRootTask();
|
final Task task = getTask();
|
||||||
if (rootTask == null) {
|
if (task == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean behindFullscreenActivity = !rootTask.shouldBeVisible(null /* starting */)
|
final boolean behindOccludedContainer = !task.shouldBeVisible(null /* starting */)
|
||||||
|| rootTask.getOccludingActivityAbove(this) != null;
|
|| task.getOccludingActivityAbove(this) != null;
|
||||||
return shouldBeVisible(behindFullscreenActivity, false /* ignoringKeyguard */);
|
return shouldBeVisible(behindOccludedContainer, false /* ignoringKeyguard */);
|
||||||
}
|
}
|
||||||
|
|
||||||
void makeVisibleIfNeeded(ActivityRecord starting, boolean reportToClient) {
|
void makeVisibleIfNeeded(ActivityRecord starting, boolean reportToClient) {
|
||||||
|
|||||||
@@ -5053,22 +5053,10 @@ class Task extends TaskFragment {
|
|||||||
positionChildAtTop(rTask);
|
positionChildAtTop(rTask);
|
||||||
}
|
}
|
||||||
Task task = null;
|
Task task = null;
|
||||||
if (!newTask && isOrhasTask) {
|
if (!newTask && isOrhasTask && !r.shouldBeVisible()) {
|
||||||
// Starting activity cannot be occluding activity, otherwise starting window could be
|
|
||||||
// remove immediately without transferring to starting activity.
|
|
||||||
final ActivityRecord occludingActivity = getOccludingActivityAbove(r);
|
|
||||||
if (occludingActivity != null) {
|
|
||||||
// Here it is! Now, if this is not yet visible (occluded by another task) to the
|
|
||||||
// user, then just add it without starting; it will get started when the user
|
|
||||||
// navigates back to it.
|
|
||||||
ProtoLog.i(WM_DEBUG_ADD_REMOVE, "Adding activity %s to task %s "
|
|
||||||
+ "callers: %s", r, task,
|
|
||||||
new RuntimeException("here").fillInStackTrace());
|
|
||||||
rTask.positionChildAtTop(r);
|
|
||||||
ActivityOptions.abort(options);
|
ActivityOptions.abort(options);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Place a new activity at top of root task, so it is next to interact with the user.
|
// Place a new activity at top of root task, so it is next to interact with the user.
|
||||||
|
|
||||||
@@ -5697,9 +5685,7 @@ class Task extends TaskFragment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// See if there is an occluding activity on-top of this one.
|
if (!r.shouldBeVisible()) return false;
|
||||||
final ActivityRecord occludingActivity = getOccludingActivityAbove(r);
|
|
||||||
if (occludingActivity != null) return false;
|
|
||||||
|
|
||||||
if (r.finishing) Slog.e(TAG, "willActivityBeVisible: Returning false,"
|
if (r.finishing) Slog.e(TAG, "willActivityBeVisible: Returning false,"
|
||||||
+ " would have returned true for r=" + r);
|
+ " would have returned true for r=" + r);
|
||||||
|
|||||||
Reference in New Issue
Block a user