summaryrefslogtreecommitdiff
path: root/libs/gui/ISurfaceComposer.cpp
diff options
context:
space:
mode:
author Dan Stoza <stoza@google.com> 2016-03-24 09:31:08 -0700
committer Dan Stoza <stoza@google.com> 2016-04-08 20:58:29 +0000
commitc4f471e75a8ec64ec34e3f2944a5a756215d0bec (patch)
treebd74987944d6e8fa6480a454cc59fbed90970137 /libs/gui/ISurfaceComposer.cpp
parent7d7ae7345abfb91be55c4aed6c9be9d09a144e4c (diff)
Plumb HDR capabilities up to SurfaceComposerClient
Plumbs HDR capabilities up from HWC2 through SurfaceFlinger and ISurfaceComposer to SurfaceComposerClient. Bug: 25684127 Change-Id: I0f07043ff42bfc7a159f785fee3e84936dc3c280
Diffstat (limited to 'libs/gui/ISurfaceComposer.cpp')
-rw-r--r--libs/gui/ISurfaceComposer.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp
index b4cbf84286..a8b4fa8226 100644
--- a/libs/gui/ISurfaceComposer.cpp
+++ b/libs/gui/ISurfaceComposer.cpp
@@ -34,6 +34,7 @@
#include <ui/DisplayInfo.h>
#include <ui/DisplayStatInfo.h>
+#include <ui/HdrCapabilities.h>
#include <utils/Log.h>
@@ -282,6 +283,28 @@ public:
reply.read(*outStats);
return reply.readInt32();
}
+
+ virtual status_t getHdrCapabilities(const sp<IBinder>& display,
+ HdrCapabilities* outCapabilities) const {
+ Parcel data, reply;
+ data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
+ status_t result = data.writeStrongBinder(display);
+ if (result != NO_ERROR) {
+ ALOGE("getHdrCapabilities failed to writeStrongBinder: %d", result);
+ return result;
+ }
+ result = remote()->transact(BnSurfaceComposer::GET_HDR_CAPABILITIES,
+ data, &reply);
+ if (result != NO_ERROR) {
+ ALOGE("getHdrCapabilities failed to transact: %d", result);
+ return result;
+ }
+ result = reply.readInt32();
+ if (result == NO_ERROR) {
+ result = reply.readParcelable(outCapabilities);
+ }
+ return result;
+ }
};
// Out-of-line virtual method definition to trigger vtable emission in this
@@ -467,6 +490,23 @@ status_t BnSurfaceComposer::onTransact(
setPowerMode(display, mode);
return NO_ERROR;
}
+ case GET_HDR_CAPABILITIES: {
+ CHECK_INTERFACE(ISurfaceComposer, data, reply);
+ sp<IBinder> display = nullptr;
+ status_t result = data.readStrongBinder(&display);
+ if (result != NO_ERROR) {
+ ALOGE("getHdrCapabilities failed to readStrongBinder: %d",
+ result);
+ return result;
+ }
+ HdrCapabilities capabilities;
+ result = getHdrCapabilities(display, &capabilities);
+ reply->writeInt32(result);
+ if (result == NO_ERROR) {
+ reply->writeParcelable(capabilities);
+ }
+ return NO_ERROR;
+ }
default: {
return BBinder::onTransact(code, data, reply, flags);
}