WindowManagerService: Disable screen rotation animation under emulation.
Since there is no support for hardware GLES acceleration under
emulation, we disable the screen rotation animation when we detect
that we are in the emulator.
Note that ideally, we should only disable it when we detect that
GLES is implemented in software. However, I don't think there is
an easy way to test for this inside of the WindowManagerService.
Change-Id: Ic17719f7d0b14640bacb3b33b7b1a196006982ee
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 169c6d8..542ccf9 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -285,6 +285,8 @@
final IBatteryStats mBatteryStats;
+ private static final boolean mInEmulator = SystemProperties.get("ro.kernel.qemu").equals("1");
+
/**
* All currently active sessions with clients.
*/
@@ -5186,7 +5188,9 @@
public void setRotationUnchecked(int rotation,
boolean alwaysSendConfiguration, int animFlags) {
if(DEBUG_ORIENTATION) Slog.v(TAG,
- "alwaysSendConfiguration set to "+alwaysSendConfiguration);
+ "setRotationUnchecked(rotation=" + rotation +
+ " alwaysSendConfiguration=" + alwaysSendConfiguration +
+ " animFlags=" + animFlags);
long origId = Binder.clearCallingIdentity();
boolean changed;
@@ -5257,7 +5261,9 @@
Slog.i(TAG, "Setting rotation to " + rotation + ", animFlags=" + animFlags);
mInputManager.setDisplayOrientation(0, rotation);
if (mDisplayEnabled) {
- if (CUSTOM_SCREEN_ROTATION) {
+ // NOTE: We disable the rotation in the emulator because
+ // it doesn't support hardware OpenGL emulation yet.
+ if (CUSTOM_SCREEN_ROTATION && !mInEmulator) {
Surface.freezeDisplay(0);
if (!inTransaction) {
if (SHOW_TRANSACTIONS) Slog.i(TAG,