Merge "AOD: Prevent animations and rotations while going to sleep" into oc-dr1-dev am: 29119b6f5f
am: 747938ed61
Change-Id: I42fa84171dbc77d973365040e026b7962e116475
This commit is contained in:
@@ -74,7 +74,6 @@ import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.PowerManager;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Slog;
|
||||
import android.view.animation.Animation;
|
||||
@@ -1317,12 +1316,12 @@ public interface WindowManagerPolicy {
|
||||
public boolean isScreenOn();
|
||||
|
||||
/**
|
||||
* @return whether the device is currently {@link PowerManager#isInteractive() interactive}.
|
||||
* @return whether the device is currently allowed to animate.
|
||||
*
|
||||
* Note: the screen can be on while the device is not interactive, e.g. when the device is
|
||||
* showing Ambient Display.
|
||||
* Note: this can be true even if it is not appropriate to animate for reasons that are outside
|
||||
* of the policy's authority.
|
||||
*/
|
||||
boolean isInteractive();
|
||||
boolean okToAnimate();
|
||||
|
||||
/**
|
||||
* Tell the policy that the lid switch has changed state.
|
||||
|
||||
@@ -3168,10 +3168,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
|
||||
@Override
|
||||
public void selectRotationAnimationLw(int anim[]) {
|
||||
// If the screen is off or non-interactive, force a jumpcut.
|
||||
final boolean forceJumpcut = !mScreenOnFully || !mAwake;
|
||||
if (PRINT_ANIM) Slog.i(TAG, "selectRotationAnimation mTopFullscreen="
|
||||
+ mTopFullscreenOpaqueWindowState + " rotationAnimation="
|
||||
+ (mTopFullscreenOpaqueWindowState == null ?
|
||||
"0" : mTopFullscreenOpaqueWindowState.getAttrs().rotationAnimation));
|
||||
"0" : mTopFullscreenOpaqueWindowState.getAttrs().rotationAnimation)
|
||||
+ " forceJumpcut=" + forceJumpcut);
|
||||
if (forceJumpcut) {
|
||||
anim[0] = R.anim.rotation_animation_jump_exit;
|
||||
anim[1] = R.anim.rotation_animation_enter;
|
||||
return;
|
||||
}
|
||||
if (mTopFullscreenOpaqueWindowState != null) {
|
||||
int animationHint = mTopFullscreenOpaqueWindowState.getRotationAnimationHint();
|
||||
if (animationHint < 0 && mTopIsFullscreen) {
|
||||
@@ -6829,8 +6837,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInteractive() {
|
||||
return mAwake;
|
||||
public boolean okToAnimate() {
|
||||
return mAwake && !mGoingToSleep;
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
|
||||
@@ -2410,7 +2410,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
boolean okToAnimate() {
|
||||
return okToDisplay() && mPolicy.isInteractive();
|
||||
return okToDisplay() && mPolicy.okToAnimate();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -382,7 +382,7 @@ class TestWindowManagerPolicy implements WindowManagerPolicy {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInteractive() {
|
||||
public boolean okToAnimate() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user