From 097f6504d56b9d2e906456a62d40b9c6220d140b Mon Sep 17 00:00:00 2001 From: Aleksej Makarov Date: Fri, 9 Jun 2023 11:54:22 +0200 Subject: [PATCH] HdmiVideoExtconUEventObserver: handle "DP=1" state HdmiVideoExtconUEventObserver handles only "HDMI=1" external connection state while kernel generates uevent with "DP=1" state when external hdmi display is connected via USB-C-to-HDMI converter. This results in wrong DisplayPolicy.mHdmiPlugged value when hdmi display is connected, so we need to handle "DP=1" state as well. Bug: 288003290 Test: take bugreport while external hdmi display is connected and grep for "mHdmiPlugged=true" Signed-off-by: Aleksej Makarov Change-Id: I410122aad09a5414a736cac51647e75fcfa61055 --- .../java/com/android/server/policy/PhoneWindowManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index fd118d2d19a69..6fabc43a8f0f1 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -6070,6 +6070,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private class HdmiVideoExtconUEventObserver extends ExtconStateObserver { private static final String HDMI_EXIST = "HDMI=1"; + private static final String DP_EXIST = "DP=1"; private static final String NAME = "hdmi"; private boolean init(ExtconInfo hdmi) { @@ -6100,7 +6101,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { public Boolean parseState(ExtconInfo extconIfno, String state) { // extcon event state changes from kernel4.9 // new state will be like STATE=HDMI=1 - return state.contains(HDMI_EXIST); + // or like STATE=DP=1 for newer kernel + return state.contains(HDMI_EXIST) || state.contains(DP_EXIST); } }