diff options
| author | 2017-07-07 02:54:36 +0000 | |
|---|---|---|
| committer | 2017-07-07 02:54:36 +0000 | |
| commit | 79b0edc9695b742e5f58d1d35c3d82d394ef5dd6 (patch) | |
| tree | 6e0ac32dc6660b3be0c9626726153632f1961eaa | |
| parent | f5d412923c1f458b7af054f8e3bab3b7efba4628 (diff) | |
| parent | 956647ec3e816d68d4b38e74b5d43fc945f7e1d8 (diff) | |
Merge "Revert "Use configuration delta to determine if still in orientation change."" into oc-dr1-dev
am: 956647ec3e
Change-Id: I7204eae9829d1e5ddc6f92ea6d358a62abc282a3
4 files changed, 19 insertions, 39 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 05f4626259d7..9fe73815b380 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1073,7 +1073,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo } if (w.mHasSurface && !rotateSeamlessly) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Set mOrientationChanging of " + w); - w.setOrientationChanging(true); + w.mOrientationChanging = true; mService.mRoot.mOrientationChangeComplete = false; w.mLastFreezeDuration = 0; } @@ -2679,10 +2679,10 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo mService.mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_TIMEOUT; forAllWindows(w -> { - if (!w.getOrientationChanging()) { + if (!w.mOrientationChanging) { return; } - w.setOrientationChanging(false); + w.mOrientationChanging = false; w.mLastFreezeDuration = (int)(SystemClock.elapsedRealtime() - mService.mDisplayFreezeTime); Slog.w(TAG_WM, "Force clearing orientation change: " + w); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 1b4c34d21257..ebfeac339083 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5789,7 +5789,7 @@ public class WindowManagerService extends IWindowManager.Stub // orientation. if (!okToDisplay() && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Changing surface while display frozen: " + w); - w.setOrientationChanging(true); + w.mOrientationChanging = true; w.mLastFreezeDuration = 0; mRoot.mOrientationChangeComplete = false; if (mWindowsFreezingScreen == WINDOWS_FREEZING_SCREENS_NONE) { diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index b4039146b647..1ec8e54cad36 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -441,7 +441,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP * Set when the orientation is changing and this window has not yet * been updated for the new orientation. */ - private boolean mOrientationChanging; + boolean mOrientationChanging; /** * The orientation during the last visible call to relayout. If our @@ -1184,8 +1184,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // then we need to hold off on unfreezing the display until this window has been // redrawn; to do that, we need to go through the process of getting informed by the // application when it has finished drawing. - if (getOrientationChanging() || dragResizingChanged - || isResizedWhileNotDragResizing()) { + if (mOrientationChanging || dragResizingChanged || isResizedWhileNotDragResizing()) { if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || DEBUG_ORIENTATION || DEBUG_RESIZE) { Slog.v(TAG_WM, "Orientation or resize start waiting for draw" + ", mDrawState=DRAW_PENDING in " + this @@ -1200,33 +1199,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (DEBUG_RESIZE || DEBUG_ORIENTATION) Slog.v(TAG_WM, "Resizing window " + this); mService.mResizingWindows.add(this); } - } else if (getOrientationChanging()) { + } else if (mOrientationChanging) { if (isDrawnLw()) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Orientation not waiting for draw in " + this + ", surfaceController " + winAnimator.mSurfaceController); - setOrientationChanging(false); + mOrientationChanging = false; mLastFreezeDuration = (int)(SystemClock.elapsedRealtime() - mService.mDisplayFreezeTime); } } } - boolean getOrientationChanging() { - // In addition to the local state flag, we must also consider the difference in the last - // reported configuration vs. the current state. If the client code has not been informed of - // the change, logic dependent on having finished processing the orientation, such as - // unfreezing, could be improperly triggered. - // TODO(b/62846907): Checking against {@link mLastReportedConfiguration} could be flaky as - // this is not necessarily what the client has processed yet. Find a - // better indicator consistent with the client. - return mOrientationChanging - || getConfiguration().orientation != mLastReportedConfiguration.orientation; - } - - void setOrientationChanging(boolean changing) { - mOrientationChanging = changing; - } - DisplayContent getDisplayContent() { return mToken.getDisplayContent(); } @@ -2680,10 +2663,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mAppFreezing = false; - if (mHasSurface && !getOrientationChanging() + if (mHasSurface && !mOrientationChanging && mService.mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "set mOrientationChanging of " + this); - setOrientationChanging(true); + mOrientationChanging = true; mService.mRoot.mOrientationChangeComplete = false; } mLastFreezeDuration = 0; @@ -3102,7 +3085,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mWinAnimator.mSurfaceResized = false; mReportOrientationChanged = false; } catch (RemoteException e) { - setOrientationChanging(false); + mOrientationChanging = false; mLastFreezeDuration = (int)(SystemClock.elapsedRealtime() - mService.mDisplayFreezeTime); // We are assuming the hosting process is dead or in a zombie state. @@ -3461,13 +3444,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP pw.print(" mDestroying="); pw.print(mDestroying); pw.print(" mRemoved="); pw.println(mRemoved); } - if (getOrientationChanging() || mAppFreezing || mTurnOnScreen + if (mOrientationChanging || mAppFreezing || mTurnOnScreen || mReportOrientationChanged) { pw.print(prefix); pw.print("mOrientationChanging="); pw.print(mOrientationChanging); - pw.print(" configOrientationChanging="); - pw.print(mLastReportedConfiguration.orientation - != getConfiguration().orientation); pw.print(" mAppFreezing="); pw.print(mAppFreezing); pw.print(" mTurnOnScreen="); pw.print(mTurnOnScreen); pw.print(" mReportOrientationChanged="); pw.println(mReportOrientationChanged); diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 8f1065f75642..cd55156a67a9 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1527,11 +1527,11 @@ class WindowStateAnimator { // There is no need to wait for an animation change if our window is gone for layout // already as we'll never be visible. - if (w.getOrientationChanging() && w.isGoneForLayoutLw()) { + if (w.mOrientationChanging && w.isGoneForLayoutLw()) { if (DEBUG_ORIENTATION) { Slog.v(TAG, "Orientation change skips hidden " + w); } - w.setOrientationChanging(false); + w.mOrientationChanging = false; } return; } @@ -1564,8 +1564,8 @@ class WindowStateAnimator { // really hidden (gone for layout), there is no point in still waiting for it. // Note that this does introduce a potential glitch if the window becomes unhidden // before it has drawn for the new orientation. - if (w.getOrientationChanging() && w.isGoneForLayoutLw()) { - w.setOrientationChanging(false); + if (w.mOrientationChanging && w.isGoneForLayoutLw()) { + w.mOrientationChanging = false; if (DEBUG_ORIENTATION) Slog.v(TAG, "Orientation change skips hidden " + w); } @@ -1618,7 +1618,7 @@ class WindowStateAnimator { mAnimator.setPendingLayoutChanges(w.getDisplayId(), WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM); } else { - w.setOrientationChanging(false); + w.mOrientationChanging = false; } } if (hasSurface()) { @@ -1631,14 +1631,14 @@ class WindowStateAnimator { displayed = true; } - if (w.getOrientationChanging()) { + if (w.mOrientationChanging) { if (!w.isDrawnLw()) { mAnimator.mBulkUpdateParams &= ~SET_ORIENTATION_CHANGE_COMPLETE; mAnimator.mLastWindowFreezeSource = w; if (DEBUG_ORIENTATION) Slog.v(TAG, "Orientation continue waiting for draw in " + w); } else { - w.setOrientationChanging(false); + w.mOrientationChanging = false; if (DEBUG_ORIENTATION) Slog.v(TAG, "Orientation change complete in " + w); } } |