Merge "Don't perform layout while adjusting displays/stacks state." into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cbacd4f0ce
@@ -375,7 +375,10 @@ public class TaskStack {
|
||||
for (int appNdx = appWindowTokens.size() - 1; appNdx >= 0; --appNdx) {
|
||||
final WindowList appWindows = appWindowTokens.get(appNdx).allAppWindows;
|
||||
for (int winNdx = appWindows.size() - 1; winNdx >= 0; --winNdx) {
|
||||
mService.removeWindowInnerLocked(appWindows.get(winNdx));
|
||||
// We are in the middle of changing the state of displays/stacks/tasks. We need
|
||||
// to finish that, before we let layout interfere with it.
|
||||
mService.removeWindowInnerLocked(appWindows.get(winNdx),
|
||||
false /* performLayout */);
|
||||
doAnotherLayoutPass = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2793,6 +2793,10 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
void removeWindowInnerLocked(WindowState win) {
|
||||
removeWindowInnerLocked(win, true);
|
||||
}
|
||||
|
||||
void removeWindowInnerLocked(WindowState win, boolean performLayout) {
|
||||
if (win.mRemoved) {
|
||||
// Nothing to do.
|
||||
return;
|
||||
@@ -2890,7 +2894,9 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
if (displayContent != null) {
|
||||
displayContent.layoutNeeded = true;
|
||||
}
|
||||
performLayoutAndPlaceSurfacesLocked();
|
||||
if (performLayout) {
|
||||
performLayoutAndPlaceSurfacesLocked();
|
||||
}
|
||||
if (win.mAppToken != null) {
|
||||
win.mAppToken.updateReportedVisibilityLocked();
|
||||
}
|
||||
@@ -5193,7 +5199,9 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
public void removeStack(int stackId) {
|
||||
mStackIdToStack.remove(stackId);
|
||||
synchronized (mWindowMap) {
|
||||
mStackIdToStack.remove(stackId);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeTask(int taskId) {
|
||||
@@ -5267,10 +5275,12 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
public void getStackBounds(int stackId, Rect bounds) {
|
||||
final TaskStack stack = mStackIdToStack.get(stackId);
|
||||
if (stack != null) {
|
||||
stack.getBounds(bounds);
|
||||
return;
|
||||
synchronized (mWindowMap) {
|
||||
final TaskStack stack = mStackIdToStack.get(stackId);
|
||||
if (stack != null) {
|
||||
stack.getBounds(bounds);
|
||||
return;
|
||||
}
|
||||
}
|
||||
bounds.setEmpty();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user