Prevent triggering orientation changes until previous completes.

Currently we defer rotation while the screen rotation animation
is animating, but there is an additional interval after the animation
completes where the display may not yet be unfrozen and attempting to
rotate again will not work.

Bug: 31749456
Change-Id: I5f6830d85fb326d5032b597cbed1b767f0b627f5
This commit is contained in:
Robert Carr
2016-10-03 16:42:04 -07:00
parent d5aa6361d9
commit 45f6a2718a

View File

@@ -6807,6 +6807,13 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Deferring rotation, animation in progress.");
return false;
}
if (mDisplayFrozen) {
// Even if the screen rotation animation has finished (e.g. isAnimating
// returns false), there is still some time where we haven't yet unfrozen
// the display. We also need to abort rotation here.
if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Deferring rotation, still finishing previous rotation");
return false;
}
if (!mDisplayEnabled) {
// No point choosing a rotation if the display is not enabled.