diff options
author | 2021-12-29 11:53:36 -0500 | |
---|---|---|
committer | 2022-01-05 15:08:51 -0500 | |
commit | e5cff63e831dfb62478701e39b8f0d2a7fe5e320 (patch) | |
tree | ecdcee7a232c48e0af69ba1392f03234d16e8315 /libs/gui/ISurfaceComposer.cpp | |
parent | 515f038344603880698e2ae5058858fe3cc429f0 (diff) |
Query the new DisplayCapability for DISPLAY_DECORATION
This allows clients (i.e. SystemUi) to know whether to use
Composition.DISPLAY_DECORATION.
Bug: 193170859
Test: manual
Test: TODO (b/212697197)
Change-Id: I0d3e93bb04937f81e95ef77d196b861621bbdc8d
Diffstat (limited to 'libs/gui/ISurfaceComposer.cpp')
-rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index 7f73013f6e..a931709dbd 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -1134,6 +1134,34 @@ public: return NO_ERROR; } + status_t getDisplayDecorationSupport(const sp<IBinder>& displayToken, + bool* outSupport) const override { + Parcel data, reply; + status_t error = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to write interface token: %d", error); + return error; + } + error = data.writeStrongBinder(displayToken); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to write display token: %d", error); + return error; + } + error = remote()->transact(BnSurfaceComposer::GET_DISPLAY_DECORATION_SUPPORT, data, &reply); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to transact: %d", error); + return error; + } + bool support; + error = reply.readBool(&support); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to read support: %d", error); + return error; + } + *outSupport = support; + return NO_ERROR; + } + status_t setFrameRate(const sp<IGraphicBufferProducer>& surface, float frameRate, int8_t compatibility, int8_t changeFrameRateStrategy) override { Parcel data, reply; @@ -2016,6 +2044,19 @@ status_t BnSurfaceComposer::onTransact( return setGlobalShadowSettings(ambientColor, spotColor, lightPosY, lightPosZ, lightRadius); } + case GET_DISPLAY_DECORATION_SUPPORT: { + CHECK_INTERFACE(ISurfaceComposer, data, reply); + sp<IBinder> displayToken; + status_t error = data.readNullableStrongBinder(&displayToken); + if (error != NO_ERROR) { + ALOGE("getDisplayDecorationSupport: failed to read display token: %d", error); + return error; + } + bool support = false; + error = getDisplayDecorationSupport(displayToken, &support); + reply->writeBool(support); + return error; + } case SET_FRAME_RATE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> binder; |