diff options
| author | 2015-10-08 22:01:06 -0700 | |
|---|---|---|
| committer | 2015-10-08 22:01:06 -0700 | |
| commit | 58fa9de4f8ba8ce3a403db0f32a7236a9f963a5e (patch) | |
| tree | f2514487cca0faf5813afe2da537615f2984b400 | |
| parent | 013f84ab79a8e19536b0c705b99b6d7383367f25 (diff) | |
Update dock divider display info. whenever it changes.
The docked divider display info. was set on object creation and never
changed. This can hang the dock divider if the device rotation is
changed and the user moves the divider rapidly in and out of the
screen edge closer to the right. We now update the display info.
whenever it changes.
Change-Id: Ie5f0c7ebdafedb156d04eceee00fc7e4176d9bf8
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DockedStackDividerController.java | 14 |
2 files changed, 10 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 438658ee40e4..39479c1a9681 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -191,6 +191,7 @@ class DisplayContent { void updateDisplayInfo() { mDisplay.getDisplayInfo(mDisplayInfo); mDisplay.getMetrics(mDisplayMetrics); + mDividerControllerLocked.updateDisplayInfo(); for (int i = mStacks.size() - 1; i >= 0; --i) { mStacks.get(i).updateDisplayInfo(null); } diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java index 610524f50f56..5da9ebb1055a 100644 --- a/services/core/java/com/android/server/wm/DockedStackDividerController.java +++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java @@ -57,8 +57,8 @@ public class DockedStackDividerController implements View.OnTouchListener, DimLa private final DisplayContent mDisplayContent; private final int mSideMargin; private final DimLayer mDimLayer; - private final int mDisplayWidth; - private final int mDisplayHeight; + private int mDisplayWidth; + private int mDisplayHeight; private View mView; private Rect mTmpRect = new Rect(); private Rect mLastResizeRect = new Rect(); @@ -72,9 +72,7 @@ public class DockedStackDividerController implements View.OnTouchListener, DimLa DockedStackDividerController(Context context, DisplayContent displayContent) { mContext = context; mDisplayContent = displayContent; - final DisplayInfo info = displayContent.getDisplayInfo(); - mDisplayWidth = info.logicalWidth; - mDisplayHeight = info.logicalHeight; + updateDisplayInfo(); mDividerWidth = context.getResources().getDimensionPixelSize( com.android.internal.R.dimen.docked_stack_divider_thickness); mSideMargin = dipToPixel(SIDE_MARGIN_DIP, mDisplayContent.getDisplayMetrics()); @@ -110,6 +108,12 @@ public class DockedStackDividerController implements View.OnTouchListener, DimLa return mView != null; } + void updateDisplayInfo() { + final DisplayInfo info = mDisplayContent.getDisplayInfo(); + mDisplayWidth = info.logicalWidth; + mDisplayHeight = info.logicalHeight; + } + void update(Configuration configuration, boolean forceUpdate) { if (forceUpdate && mView != null) { removeDivider(); |