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) {
|
for (int appNdx = appWindowTokens.size() - 1; appNdx >= 0; --appNdx) {
|
||||||
final WindowList appWindows = appWindowTokens.get(appNdx).allAppWindows;
|
final WindowList appWindows = appWindowTokens.get(appNdx).allAppWindows;
|
||||||
for (int winNdx = appWindows.size() - 1; winNdx >= 0; --winNdx) {
|
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;
|
doAnotherLayoutPass = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2793,6 +2793,10 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
void removeWindowInnerLocked(WindowState win) {
|
void removeWindowInnerLocked(WindowState win) {
|
||||||
|
removeWindowInnerLocked(win, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void removeWindowInnerLocked(WindowState win, boolean performLayout) {
|
||||||
if (win.mRemoved) {
|
if (win.mRemoved) {
|
||||||
// Nothing to do.
|
// Nothing to do.
|
||||||
return;
|
return;
|
||||||
@@ -2890,7 +2894,9 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
if (displayContent != null) {
|
if (displayContent != null) {
|
||||||
displayContent.layoutNeeded = true;
|
displayContent.layoutNeeded = true;
|
||||||
}
|
}
|
||||||
performLayoutAndPlaceSurfacesLocked();
|
if (performLayout) {
|
||||||
|
performLayoutAndPlaceSurfacesLocked();
|
||||||
|
}
|
||||||
if (win.mAppToken != null) {
|
if (win.mAppToken != null) {
|
||||||
win.mAppToken.updateReportedVisibilityLocked();
|
win.mAppToken.updateReportedVisibilityLocked();
|
||||||
}
|
}
|
||||||
@@ -5193,7 +5199,9 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeStack(int stackId) {
|
public void removeStack(int stackId) {
|
||||||
mStackIdToStack.remove(stackId);
|
synchronized (mWindowMap) {
|
||||||
|
mStackIdToStack.remove(stackId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeTask(int taskId) {
|
public void removeTask(int taskId) {
|
||||||
@@ -5267,10 +5275,12 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void getStackBounds(int stackId, Rect bounds) {
|
public void getStackBounds(int stackId, Rect bounds) {
|
||||||
final TaskStack stack = mStackIdToStack.get(stackId);
|
synchronized (mWindowMap) {
|
||||||
if (stack != null) {
|
final TaskStack stack = mStackIdToStack.get(stackId);
|
||||||
stack.getBounds(bounds);
|
if (stack != null) {
|
||||||
return;
|
stack.getBounds(bounds);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
bounds.setEmpty();
|
bounds.setEmpty();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user