summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gil Dekel <gildekel@google.com> 2024-11-08 16:31:24 -0500
committer Gil Dekel <gildekel@google.com> 2024-12-02 17:31:13 -0500
commitffca0adeddc2da58a709bfef4c3e5e1522a061a3 (patch)
tree0539bb705de8bce5f547936bfa3c35ea98131a55
parent27cb4c815bf789dee511a884f68f22323057bf87 (diff)
SF: Cache display port in DisplayIdentification on onHotplugConnect
In order to be able to remove direct dependencies on a DisplayId's int value, we have to find alternatives for the API it provides. One such piece of data is a display port, which is encoded directly in the ID int value. Cache the port as it is retrieved from HWC into DisplayIdentification so it can be served later via alternative ISurfaceComposer APIs. Bug: 374163881 Bug: 377307639 Flag: EXEMPT refactor Test: libsurfaceflinger_unittest Change-Id: If255418ed4047531417004c4a1fd710061d93685
-rw-r--r--libs/ui/DisplayIdentification.cpp1
-rw-r--r--libs/ui/include/ui/DisplayIdentification.h1
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.cpp1
3 files changed, 3 insertions, 0 deletions
diff --git a/libs/ui/DisplayIdentification.cpp b/libs/ui/DisplayIdentification.cpp
index 8d6f74b605..c9f0761a01 100644
--- a/libs/ui/DisplayIdentification.cpp
+++ b/libs/ui/DisplayIdentification.cpp
@@ -417,6 +417,7 @@ std::optional<DisplayIdentificationInfo> parseDisplayIdentificationData(
return DisplayIdentificationInfo{
.id = displayId,
.name = std::string(edid->displayName),
+ .port = port,
.deviceProductInfo = buildDeviceProductInfo(*edid),
.preferredDetailedTimingDescriptor = edid->preferredDetailedTimingDescriptor,
};
diff --git a/libs/ui/include/ui/DisplayIdentification.h b/libs/ui/include/ui/DisplayIdentification.h
index cf67d7bf93..cdac2698dd 100644
--- a/libs/ui/include/ui/DisplayIdentification.h
+++ b/libs/ui/include/ui/DisplayIdentification.h
@@ -42,6 +42,7 @@ struct DetailedTimingDescriptor {
struct DisplayIdentificationInfo {
PhysicalDisplayId id;
std::string name;
+ uint8_t port;
std::optional<DeviceProductInfo> deviceProductInfo;
std::optional<DetailedTimingDescriptor> preferredDetailedTimingDescriptor;
};
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 55ccdefa7a..721cfd31bb 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -1180,6 +1180,7 @@ std::optional<DisplayIdentificationInfo> HWComposer::onHotplugConnect(
return DisplayIdentificationInfo{.id = PhysicalDisplayId::fromPort(port),
.name = isPrimary ? "Primary display"
: "Secondary display",
+ .port = port,
.deviceProductInfo = std::nullopt};
}();