diff options
author | Jeff Brown <jeffbrown@google.com> | 2013-04-17 17:18:15 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2013-04-17 17:18:15 -0700 |
commit | c82c89edc76667d2d39f5327bffd3c9b7cf04d9f (patch) | |
tree | e4a81b4468ae8ad275aad4493e85481f44ac4dfd /policy | |
parent | 37f58dccecd778f5af1f1f1db492c75ec5fcabd6 (diff) | |
download | frameworks_base-c82c89edc76667d2d39f5327bffd3c9b7cf04d9f.zip frameworks_base-c82c89edc76667d2d39f5327bffd3c9b7cf04d9f.tar.gz frameworks_base-c82c89edc76667d2d39f5327bffd3c9b7cf04d9f.tar.bz2 |
Add a config resource to force HDMI rotation on some devices.
If the hardware composer HAL does not provide full support for
multiple displays, it may be necessary to force the HDMI rotation
when not docked. (When docked, we can use the dock's orientation.)
This configuration is not expected to be used on newer devices
with the requisite HAL support and may be removed in the future.
Bug: 8511721
Change-Id: I1ff50f00ee7fe621aceff94bd938ecf6385c3f38
Diffstat (limited to 'policy')
-rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindowManager.java | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 7cb6b09..7f3fc43 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -251,8 +251,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mLidOpenRotation; int mCarDockRotation; int mDeskDockRotation; - int mHdmiRotation; - boolean mHdmiRotationLock; + int mUndockedHdmiRotation; + int mDemoHdmiRotation; + boolean mDemoHdmiRotationLock; int mUserRotationMode = WindowManagerPolicy.USER_ROTATION_FREE; int mUserRotation = Surface.ROTATION_0; @@ -854,6 +855,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_carDockRotation); mDeskDockRotation = readRotation( com.android.internal.R.integer.config_deskDockRotation); + mUndockedHdmiRotation = readRotation( + com.android.internal.R.integer.config_undockedHdmiRotation); mCarDockEnablesAccelerometer = mContext.getResources().getBoolean( com.android.internal.R.bool.config_carDockEnablesAccelerometer); mDeskDockEnablesAccelerometer = mContext.getResources().getBoolean( @@ -1024,11 +1027,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { // For demo purposes, allow the rotation of the HDMI display to be controlled. // By default, HDMI locks rotation to landscape. if ("portrait".equals(SystemProperties.get("persist.demo.hdmirotation"))) { - mHdmiRotation = mPortraitRotation; + mDemoHdmiRotation = mPortraitRotation; } else { - mHdmiRotation = mLandscapeRotation; + mDemoHdmiRotation = mLandscapeRotation; } - mHdmiRotationLock = SystemProperties.getBoolean("persist.demo.hdmirotationlock", false); + mDemoHdmiRotationLock = SystemProperties.getBoolean("persist.demo.hdmirotationlock", false); } @Override @@ -4200,10 +4203,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { // enable 180 degree rotation while docked. preferredRotation = mDeskDockEnablesAccelerometer ? sensorRotation : mDeskDockRotation; - } else if (mHdmiPlugged && mHdmiRotationLock) { - // Ignore sensor when plugged into HDMI. + } else if (mHdmiPlugged && mDemoHdmiRotationLock) { + // Ignore sensor when plugged into HDMI when demo HDMI rotation lock enabled. // Note that the dock orientation overrides the HDMI orientation. - preferredRotation = mHdmiRotation; + preferredRotation = mDemoHdmiRotation; + } else if (mHdmiPlugged && mDockMode == Intent.EXTRA_DOCK_STATE_UNDOCKED + && mUndockedHdmiRotation >= 0) { + // Ignore sensor when plugged into HDMI and an undocked orientation has + // been specified in the configuration (only for legacy devices without + // full multi-display support). + // Note that the dock orientation overrides the HDMI orientation. + preferredRotation = mUndockedHdmiRotation; } else if (orientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) { // Application just wants to remain locked in the last rotation. preferredRotation = lastRotation; @@ -4967,7 +4977,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(" mSeascapeRotation="); pw.println(mSeascapeRotation); pw.print(prefix); pw.print("mPortraitRotation="); pw.print(mPortraitRotation); pw.print(" mUpsideDownRotation="); pw.println(mUpsideDownRotation); - pw.print(prefix); pw.print("mHdmiRotation="); pw.print(mHdmiRotation); - pw.print(" mHdmiRotationLock="); pw.println(mHdmiRotationLock); + pw.print(prefix); pw.print("mDemoHdmiRotation="); pw.print(mDemoHdmiRotation); + pw.print(" mDemoHdmiRotationLock="); pw.println(mDemoHdmiRotationLock); + pw.print(prefix); pw.print("mUndockedHdmiRotation="); pw.println(mUndockedHdmiRotation); } } |