summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/wm/WindowManagerService.java
diff options
context:
space:
mode:
authorFilip Gruszczynski <gruszczy@google.com>2015-09-01 23:33:58 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-09-01 23:33:58 +0000
commit991e493616a644b6bb7fdea9a99990520d77348a (patch)
tree4ec0f07e5c46d3fc45cbcf7b6219b7ba2e2033ba /services/core/java/com/android/server/wm/WindowManagerService.java
parent7e28b3bced7d6963114f667fc2ec0a13ff64607d (diff)
parentcbacd4f0cee10b63adf6e2d482e7b4f62c0104a0 (diff)
downloadframeworks_base-991e493616a644b6bb7fdea9a99990520d77348a.zip
frameworks_base-991e493616a644b6bb7fdea9a99990520d77348a.tar.gz
frameworks_base-991e493616a644b6bb7fdea9a99990520d77348a.tar.bz2
am cbacd4f0: Merge "Don\'t perform layout while adjusting displays/stacks state." into mnc-dev
* commit 'cbacd4f0cee10b63adf6e2d482e7b4f62c0104a0': Don't perform layout while adjusting displays/stacks state.
Diffstat (limited to 'services/core/java/com/android/server/wm/WindowManagerService.java')
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 36cb7f2..e903e4f 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -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();
}