SF: Fix HWC based virtual display creation
Allow HWC based virtual display only for wifi display
CRs-Fixed: 2984439
Change-Id: Ifbb094a2a0101171b475bd5a60660a3599dce5ff
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 794f59a..1a81256 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -654,8 +654,10 @@
}
VirtualDisplayId SurfaceFlinger::acquireVirtualDisplay(ui::Size resolution,
- ui::PixelFormat format) {
- if (auto& generator = mVirtualDisplayIdGenerators.hal) {
+ ui::PixelFormat format,
+ bool canAllocateHwcForVDS) {
+ auto& generator = mVirtualDisplayIdGenerators.hal;
+ if (canAllocateHwcForVDS && generator) {
if (const auto id = generator->generateId()) {
if (getHwComposer().allocateVirtualDisplay(*id, resolution, &format)) {
return *id;
@@ -3842,7 +3844,7 @@
if (const auto& physical = state.physical) {
builder.setId(physical->id);
} else {
- builder.setId(acquireVirtualDisplay(resolution, pixelFormat));
+ builder.setId(acquireVirtualDisplay(resolution, pixelFormat, canAllocateHwcForVDS));
}
builder.setPixels(resolution);