diff options
author | 2016-04-08 23:13:01 +0000 | |
---|---|---|
committer | 2016-04-08 23:13:01 +0000 | |
commit | 97a46df0ee9708822f190a76047c490f54c199cd (patch) | |
tree | 1e98ef22bba5def39716a8b35716b19c04686f8d /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | 45d15b835738497f812bec55affc9a1cba4ec343 (diff) | |
parent | c4f471e75a8ec64ec34e3f2944a5a756215d0bec (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.cpp | 22 |
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(); |