Merge "Fixed bug with task record not updating to fullscreen sometimes"
This commit is contained in:
committed by
Android (Google) Code Review
commit
5ad34c3e5b
@@ -3124,6 +3124,14 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
||||
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "am.resizeStack_" + stackId);
|
||||
mWindowManager.deferSurfaceLayout();
|
||||
try {
|
||||
|
||||
if (bounds != null && mWindowManager.isFullscreenBounds(stackId, bounds)) {
|
||||
// The bounds passed in corresponds to the fullscreen bounds which we normally
|
||||
// represent with null. Go ahead and set it to null so that all tasks configuration
|
||||
// can have the right fullscreen state.
|
||||
bounds = null;
|
||||
}
|
||||
|
||||
ActivityRecord r = stack.topRunningActivityLocked();
|
||||
|
||||
mTmpBounds.clear();
|
||||
|
||||
@@ -144,6 +144,14 @@ public class TaskStack implements DimLayer.DimLayerUser {
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean isFullscreenBounds(Rect bounds) {
|
||||
if (mDisplayContent == null || bounds == null) {
|
||||
return true;
|
||||
}
|
||||
mDisplayContent.getLogicalDisplayRect(mTmpRect);
|
||||
return mTmpRect.equals(bounds);
|
||||
}
|
||||
|
||||
private boolean setBounds(Rect bounds) {
|
||||
boolean oldFullscreen = mFullscreen;
|
||||
int rotation = Surface.ROTATION_0;
|
||||
|
||||
@@ -459,7 +459,6 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
EmulatorDisplayOverlay mEmulatorDisplayOverlay;
|
||||
|
||||
final float[] mTmpFloats = new float[9];
|
||||
final Rect mTmpContentRect = new Rect();
|
||||
|
||||
boolean mDisplayReady;
|
||||
boolean mSafeMode;
|
||||
@@ -4830,6 +4829,17 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns true if the input bounds corresponds to the fullscreen bounds the stack is on. */
|
||||
public boolean isFullscreenBounds(int stackId, Rect bounds) {
|
||||
synchronized (mWindowMap) {
|
||||
final TaskStack stack = mStackIdToStack.get(stackId);
|
||||
if (stack == null || bounds == null) {
|
||||
return true;
|
||||
}
|
||||
return stack.isFullscreenBounds(bounds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-sizes a stack and its containing tasks.
|
||||
* @param stackId Id of stack to resize.
|
||||
|
||||
@@ -96,6 +96,7 @@ class WindowSurfacePlacer {
|
||||
private long mUserActivityTimeout = -1;
|
||||
private boolean mUpdateRotation = false;
|
||||
private final Rect mTmpStartRect = new Rect();
|
||||
private final Rect mTmpContentRect = new Rect();
|
||||
|
||||
// Set to true when the display contains content to show the user.
|
||||
// When false, the display manager may choose to mirror or blank the display.
|
||||
@@ -862,8 +863,8 @@ class WindowSurfacePlacer {
|
||||
mService.mScreenRect.set(0, 0, dw, dh);
|
||||
}
|
||||
|
||||
mService.mPolicy.getContentRectLw(mService.mTmpContentRect);
|
||||
displayContent.resize(mService.mTmpContentRect);
|
||||
mService.mPolicy.getContentRectLw(mTmpContentRect);
|
||||
displayContent.resize(mTmpContentRect);
|
||||
|
||||
int seq = mService.mLayoutSeq+1;
|
||||
if (seq < 0) seq = 0;
|
||||
|
||||
Reference in New Issue
Block a user