From 04ad7b14987f16dc28a9cdcf07de22cb01a5ac95 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Fri, 2 Oct 2015 12:43:27 -0700 Subject: Fixed issue with not force resizing a task when drag ends. We were checking mResizing when the drag ends to see if we should force resize, but it was being set to false just before the force resize check in endDragLocked. Also, don't call AM to resize task if bounds isn't going to change. Change-Id: Ice2c32a0f15f7489a7c80f21bd79c31104ba4487 --- .../android/server/am/ActivityStackSupervisor.java | 2 +- .../java/com/android/server/wm/TaskPositioner.java | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 98b6ee6d2402..3a368ac59369 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3091,7 +3091,7 @@ public final class ActivityStackSupervisor implements DisplayListener { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "am.resizeTask_" + task.taskId); final Configuration overrideConfig = task.updateOverrideConfiguration(bounds); - // This variable holds information whether the configuration didn't change in a signficant + // This variable holds information whether the configuration didn't change in a significant // way and the activity was kept the way it was. If it's false, it means the activity had // to be relaunched due to configuration change. boolean kept = true; diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java index 9da7406e8d3c..290c2eaf0bf3 100644 --- a/services/core/java/com/android/server/wm/TaskPositioner.java +++ b/services/core/java/com/android/server/wm/TaskPositioner.java @@ -146,13 +146,18 @@ class TaskPositioner implements DimLayer.DimLayerUser { } synchronized (mService.mWindowMap) { mDragEnded = notifyMoveLocked(newX, newY); + mTask.getBounds(mTmpRect); + } + if (!mTmpRect.equals(mWindowDragBounds)) { + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, + "wm.TaskPositioner.resizeTask"); + try { + mService.mActivityManager.resizeTask( + mTask.mTaskId, mWindowDragBounds, RESIZE_MODE_USER); + } catch (RemoteException e) { + } + Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); } - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "wm.TaskPositioner.resizeTask"); - try { - mService.mActivityManager.resizeTask( - mTask.mTaskId, mWindowDragBounds, RESIZE_MODE_USER); - } catch(RemoteException e) {} - Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); } break; case MotionEvent.ACTION_UP: { @@ -171,11 +176,12 @@ class TaskPositioner implements DimLayer.DimLayerUser { } if (mDragEnded) { + final boolean wasResizing = mResizing; synchronized (mService.mWindowMap) { endDragLocked(); } try { - if (mResizing) { + if (wasResizing) { // We were using fullscreen surface during resizing. Request // resizeTask() one last time to restore surface to window size. mService.mActivityManager.resizeTask( -- cgit v1.2.3-59-g8ed1b