From 8e003cc6512b3148c6de1395457d2f44885cbe98 Mon Sep 17 00:00:00 2001 From: hmz007 Date: Thu, 16 Apr 2020 16:47:57 +0800 Subject: [PATCH] android: rockchip: Minor fixes for HDMI & rotation Signed-off-by: hmz007 --- .../com/android/server/display/LogicalDisplay.java | 12 ++++++++++++ packages/apps/Settings/res/values/strings.xml | 5 +++-- packages/apps/Settings/res/xml/display_settings.xml | 1 + .../com/android/settings/display/HdmiSettings.java | 9 +++++---- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java b/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java index b468d603d90..08f7f494d73 100644 --- a/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java +++ b/frameworks/base/services/core/java/com/android/server/display/LogicalDisplay.java @@ -677,6 +677,18 @@ final class LogicalDisplay { int orientation = Surface.ROTATION_0; if ((displayDeviceInfo.flags & DisplayDeviceInfo.FLAG_ROTATES_WITH_CONTENT) != 0) { orientation = displayInfo.rotation; + + // Fixup the orientation of HDMI for portrait built-in display + if (displayDeviceInfo.type == Display.TYPE_EXTERNAL) { + DisplayDeviceInfo primaryDeviceInfo = mPrimaryDisplayDevice.getDisplayDeviceInfoLocked(); + if (primaryDeviceInfo.width < primaryDeviceInfo.height) { + if (displayInfo.logicalWidth < displayInfo.logicalHeight) { + orientation += Surface.ROTATION_90; + } else if (displayInfo.rotation > 0) { + orientation -= Surface.ROTATION_90; + } + } + } } // Apply the physical rotation of the display device itself. diff --git a/packages/apps/Settings/res/values/strings.xml b/packages/apps/Settings/res/values/strings.xml index 6010bd9e0c5..d374f47c7df 100644 --- a/packages/apps/Settings/res/values/strings.xml +++ b/packages/apps/Settings/res/values/strings.xml @@ -12380,8 +12380,9 @@ - HDMI - System Direction + HDMI & Rotation + Set preferred Resolution, Overscan and Rotation + Display Rotation Screen Setting Main Screen Aux Screen diff --git a/packages/apps/Settings/res/xml/display_settings.xml b/packages/apps/Settings/res/xml/display_settings.xml index 7d60562637f..20cc7b5a2cd 100644 --- a/packages/apps/Settings/res/xml/display_settings.xml +++ b/packages/apps/Settings/res/xml/display_settings.xml @@ -184,6 +184,7 @@ diff --git a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java index a481d34173e..58c76116046 100644 --- a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java +++ b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java @@ -100,6 +100,7 @@ public class HdmiSettings extends SettingsPreferenceFragment private String main_switch_node = SYS_NODE_HDMI_STATUS; private String aux_switch_node = SYS_NODE_DP_STATUS; + private boolean mShowSystemRotation = true; private ListPreference mSystemRotation; private PreferenceCategory mAuxCategory; private CheckBoxPreference mAuxScreenVH; @@ -329,9 +330,7 @@ public class HdmiSettings extends SettingsPreferenceFragment } private void init() { - //boolean showSystemRotation = mShowSettings != DISPLAY_SHOW_SETTINGS.ONLY_SHOW_AUX; - boolean showSystemRotation = false; - if (showSystemRotation) { + if (mShowSystemRotation) { mSystemRotation = (ListPreference) findPreference(KEY_SYSTEM_ROTATION); mSystemRotation.setOnPreferenceChangeListener(this); try { @@ -357,7 +356,8 @@ public class HdmiSettings extends SettingsPreferenceFragment } } else { removePreference(KEY_SYSTEM_ROTATION); - }//这边 + } + int displayNumber = DrmDisplaySetting.getDisplayNumber(); Log.v(TAG, "displayNumber=" + displayNumber); String[] connectorInfos = DrmDisplaySetting.getConnectorInfo(); @@ -366,6 +366,7 @@ public class HdmiSettings extends SettingsPreferenceFragment Log.v(TAG, i + " connectorInfo====" + connectorInfos[i]); } } + mDisplayInfoList.clear(); for (int i = 0; i < displayNumber; i++) { String typeName = "";