diff options
| author | 2016-01-05 15:32:34 +0100 | |
|---|---|---|
| committer | 2016-01-05 14:35:50 +0000 | |
| commit | 7b371ddfbd5f4387703b76a30562fa7abcb0fc0e (patch) | |
| tree | 06b0906acd51cd6fcd76625e741f80f7f1c307c6 | |
| parent | 2a37455a285c831dbe4e367bdb632f687f3d3f5d (diff) | |
Do not pass invalid bounds for dim layer
Makes the entire system freeze.
Bug: 26396656
Change-Id: I9e9b0a297a351cd8ef72cdc8f5994df6c42567d9
| -rw-r--r-- | services/core/java/com/android/server/wm/DockedStackDividerController.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index 27ff5bc8e977..88aad13841b0 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -172,12 +172,18 @@ public class DockedStackDividerController implements DimLayerUser { void setResizeDimLayer(boolean visible, int targetStackId, float alpha) { SurfaceControl.openTransaction(); TaskStack stack = mDisplayContent.mService.mStackIdToStack.get(targetStackId); - if (visible && stack != null) { + boolean visibleAndValid = visible && stack != null; + if (visibleAndValid) { stack.getDimBounds(mTmpRect); - mDimLayer.setBounds(mTmpRect); - mDimLayer.show(mDisplayContent.mService.mLayersController.getResizeDimLayer(), alpha, - 0 /* duration */); - } else { + if (mTmpRect.height() > 0) { + mDimLayer.setBounds(mTmpRect); + mDimLayer.show(mDisplayContent.mService.mLayersController.getResizeDimLayer(), + alpha, 0 /* duration */); + } else { + visibleAndValid = false; + } + } + if (!visibleAndValid) { mDimLayer.hide(); } SurfaceControl.closeTransaction(); |