Merge "Correct errant entry in to DRAG_RESIZE_FREEFORM state." into oc-dev

This commit is contained in:
Rob Carr
2017-06-15 01:18:17 +00:00
committed by Android (Google) Code Review

View File

@@ -891,8 +891,24 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
return mPendingRelaunchCount > 0; return mPendingRelaunchCount > 0;
} }
boolean shouldFreezeBounds() {
final Task task = getTask();
// For freeform windows, we can't freeze the bounds at the moment because this would make
// the resizing unresponsive.
if (task == null || task.inFreeformWorkspace()) {
return false;
}
// We freeze the bounds while drag resizing to deal with the time between
// the divider/drag handle being released, and the handling it's new
// configuration. If we are relaunched outside of the drag resizing state,
// we need to be careful not to do this.
return getTask().isDragResizing();
}
void startRelaunching() { void startRelaunching() {
if (canFreezeBounds()) { if (shouldFreezeBounds()) {
freezeBounds(); freezeBounds();
} }
@@ -909,9 +925,8 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
} }
void finishRelaunching() { void finishRelaunching() {
if (canFreezeBounds()) {
unfreezeBounds(); unfreezeBounds();
}
if (mPendingRelaunchCount > 0) { if (mPendingRelaunchCount > 0) {
mPendingRelaunchCount--; mPendingRelaunchCount--;
} else { } else {
@@ -926,9 +941,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
if (mPendingRelaunchCount == 0) { if (mPendingRelaunchCount == 0) {
return; return;
} }
if (canFreezeBounds()) {
unfreezeBounds(); unfreezeBounds();
}
mPendingRelaunchCount = 0; mPendingRelaunchCount = 0;
} }
@@ -1032,14 +1045,6 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
} }
} }
private boolean canFreezeBounds() {
final Task task = getTask();
// For freeform windows, we can't freeze the bounds at the moment because this would make
// the resizing unresponsive.
return task != null && !task.inFreeformWorkspace();
}
/** /**
* Freezes the task bounds. The size of this task reported the app will be fixed to the bounds * Freezes the task bounds. The size of this task reported the app will be fixed to the bounds
* freezed by {@link Task#prepareFreezingBounds} until {@link #unfreezeBounds} gets called, even * freezed by {@link Task#prepareFreezingBounds} until {@link #unfreezeBounds} gets called, even
@@ -1064,9 +1069,10 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
* Unfreezes the previously frozen bounds. See {@link #freezeBounds}. * Unfreezes the previously frozen bounds. See {@link #freezeBounds}.
*/ */
private void unfreezeBounds() { private void unfreezeBounds() {
if (!mFrozenBounds.isEmpty()) { if (mFrozenBounds.isEmpty()) {
mFrozenBounds.remove(); return;
} }
mFrozenBounds.remove();
if (!mFrozenMergedConfig.isEmpty()) { if (!mFrozenMergedConfig.isEmpty()) {
mFrozenMergedConfig.remove(); mFrozenMergedConfig.remove();
} }