From 8c8db54b9ddc917ccc3a43a0be06581cfb76518f Mon Sep 17 00:00:00 2001 From: Vishnu Nair Date: Fri, 17 Sep 2021 19:51:45 -0700 Subject: SF: Temporarily expose primary display id WM needs to know the address of the primary display in order to consume ro.surface_flinger.primary_display_orientation correctly. This path will be removed in the future once we support per display install orientations. Bug: 196167822 Test: check initial buffer transforms on displays with a different install orientation Change-Id: I2b0a92196a8a1f05f7d99b531775b9979f07af98 --- libs/gui/ISurfaceComposer.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libs/gui/ISurfaceComposer.cpp') diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index 3bf63062f6..3c8289fe2a 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -297,6 +297,20 @@ public: return {}; } + status_t getPrimaryPhysicalDisplayId(PhysicalDisplayId* displayId) const override { + Parcel data, reply; + SAFE_PARCEL(data.writeInterfaceToken, ISurfaceComposer::getInterfaceDescriptor()); + SAFE_PARCEL(remote()->transact, BnSurfaceComposer::GET_PRIMARY_PHYSICAL_DISPLAY_ID, data, + &reply); + uint64_t rawId; + SAFE_PARCEL(reply.readUint64, &rawId); + if (const auto id = DisplayId::fromValue(rawId)) { + *displayId = *id; + return NO_ERROR; + } + return NAME_NOT_FOUND; + } + sp getPhysicalDisplayToken(PhysicalDisplayId displayId) const override { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); @@ -1738,6 +1752,16 @@ status_t BnSurfaceComposer::onTransact( [](PhysicalDisplayId id) { return id.value; }); return reply->writeUint64Vector(rawIds); } + case GET_PRIMARY_PHYSICAL_DISPLAY_ID: { + CHECK_INTERFACE(ISurfaceComposer, data, reply); + PhysicalDisplayId id; + status_t result = getPrimaryPhysicalDisplayId(&id); + if (result != NO_ERROR) { + ALOGE("getPrimaryPhysicalDisplayId: Failed to get id"); + return result; + } + return reply->writeUint64(id.value); + } case ADD_REGION_SAMPLING_LISTENER: { CHECK_INTERFACE(ISurfaceComposer, data, reply); Rect samplingArea; -- cgit v1.2.3-59-g8ed1b