summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/SurfaceFlinger.cpp
diff options
context:
space:
mode:
author Dan Stoza <stoza@google.com> 2016-04-08 23:13:01 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-04-08 23:13:01 +0000
commit97a46df0ee9708822f190a76047c490f54c199cd (patch)
tree1e98ef22bba5def39716a8b35716b19c04686f8d /services/surfaceflinger/SurfaceFlinger.cpp
parent45d15b835738497f812bec55affc9a1cba4ec343 (diff)
parentc4f471e75a8ec64ec34e3f2944a5a756215d0bec (diff)
Merge changes I0f07043f,Ib4635ee4,I472ad9f0 into nyc-dev
* changes: Plumb HDR capabilities up to SurfaceComposerClient HWC2: Add getHdrCapabilities to C++ shim HWC2: Add getHdrCapabilities stub to adapter
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 40e9ae78c9..1f85bee079 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -715,6 +715,27 @@ status_t SurfaceFlinger::getAnimationFrameStats(FrameStats* outStats) const {
return NO_ERROR;
}
+status_t SurfaceFlinger::getHdrCapabilities(const sp<IBinder>& display,
+ HdrCapabilities* outCapabilities) const {
+ Mutex::Autolock _l(mStateLock);
+
+ sp<const DisplayDevice> displayDevice(getDisplayDevice(display));
+ if (displayDevice == nullptr) {
+ ALOGE("getHdrCapabilities: Invalid display %p", displayDevice.get());
+ return BAD_VALUE;
+ }
+
+ std::unique_ptr<HdrCapabilities> capabilities =
+ mHwc->getHdrCapabilities(displayDevice->getHwcDisplayId());
+ if (capabilities) {
+ std::swap(*outCapabilities, *capabilities);
+ } else {
+ return BAD_VALUE;
+ }
+
+ return NO_ERROR;
+}
+
// ----------------------------------------------------------------------------
sp<IDisplayEventConnection> SurfaceFlinger::createDisplayEventConnection() {
@@ -2881,6 +2902,7 @@ status_t SurfaceFlinger::onTransact(
case CLEAR_ANIMATION_FRAME_STATS:
case GET_ANIMATION_FRAME_STATS:
case SET_POWER_MODE:
+ case GET_HDR_CAPABILITIES:
{
// codes that require permission check
IPCThreadState* ipc = IPCThreadState::self();