summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/SurfaceFlinger.cpp
diff options
context:
space:
mode:
author Gil Dekel <gildekel@google.com> 2025-03-03 16:30:17 -0500
committer Gil Dekel <gildekel@google.com> 2025-03-10 16:58:51 -0400
commita8da2ca27afc482043032299e873b95994eff06b (patch)
tree15f81cd477b1b8e6689ff71173d016d02da0c82a /services/surfaceflinger/SurfaceFlinger.cpp
parent0864e4f913faa5464f61cc5e870a3d69fa70557a (diff)
SF: Remove *DisplayId::tryCast usage from Output
Work towards DisplayId opaqueness by eliminating call-sites to APIs that parse the display ID values directly. One such site is compositionengine::Output and its implementers, such as compositionengine::Display. Replace all calls to *DisplayId::tryCast with local calls to cached display state at the time of Output creation. Flag: com.android.graphics.surfaceflinger.flags.stable_edid_ids Bug: 390690584 Test: libcompositionengine_test && libsurfaceflinger_unittest Change-Id: I5524928e839e683184a878d08c2515e3d9d0593d
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 9cd2314cf5..ab468c911f 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -659,13 +659,15 @@ void SurfaceFlinger::enableHalVirtualDisplays(bool enable) {
}
}
-VirtualDisplayId SurfaceFlinger::acquireVirtualDisplay(ui::Size resolution, ui::PixelFormat format,
- const std::string& uniqueId) {
+void SurfaceFlinger::acquireVirtualDisplay(ui::Size resolution, ui::PixelFormat format,
+ const std::string& uniqueId,
+ compositionengine::DisplayCreationArgsBuilder& builder) {
if (auto& generator = mVirtualDisplayIdGenerators.hal) {
if (const auto id = generator->generateId()) {
if (getHwComposer().allocateVirtualDisplay(*id, resolution, &format)) {
acquireVirtualDisplaySnapshot(*id, uniqueId);
- return *id;
+ builder.setId(*id);
+ return;
}
generator->releaseId(*id);
@@ -679,7 +681,7 @@ VirtualDisplayId SurfaceFlinger::acquireVirtualDisplay(ui::Size resolution, ui::
const auto id = mVirtualDisplayIdGenerators.gpu.generateId();
LOG_ALWAYS_FATAL_IF(!id, "Failed to generate ID for GPU virtual display");
acquireVirtualDisplaySnapshot(*id, uniqueId);
- return *id;
+ builder.setId(*id);
}
void SurfaceFlinger::releaseVirtualDisplay(VirtualDisplayId displayId) {
@@ -4008,7 +4010,7 @@ void SurfaceFlinger::processDisplayAdded(const wp<IBinder>& displayToken,
if (const auto& physical = state.physical) {
builder.setId(physical->id);
} else {
- builder.setId(acquireVirtualDisplay(resolution, pixelFormat, state.uniqueId));
+ acquireVirtualDisplay(resolution, pixelFormat, state.uniqueId, builder);
}
builder.setPixels(resolution);