diff options
author | Prabhanjan Kandula <pkandula@codeaurora.org> | 2017-05-30 17:13:40 -0700 |
---|---|---|
committer | Prabhanjan Kandula <pkandula@codeaurora.org> | 2017-05-31 11:40:45 -0700 |
commit | 5265b055525d8aed2aefdbf005f6f4b20c6bf8c3 (patch) | |
tree | f0af7630830a43414ccd38b832c5930a888e417c /sdm/libs/hwc2/hwc_layers.cpp | |
parent | 725789e5e651436f908421d486c7e104a300e68c (diff) | |
download | display-5265b055525d8aed2aefdbf005f6f4b20c6bf8c3.tar.gz |
hwc2: Reset SDM layer per frame data while creating layer-stack
Sdm can modify layer transform and position on display while
adjusting for panel orientation. Reset transform and display frame
from hwc layer everytime while creating input layer-stack for SDM.
Change-Id: I8dcdc4f072012e50bae57f30ad261664e0e6b74d
CRs-fixed: 2051379
Diffstat (limited to 'sdm/libs/hwc2/hwc_layers.cpp')
-rw-r--r-- | sdm/libs/hwc2/hwc_layers.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp index 51a86873..cb1c5f0c 100644 --- a/sdm/libs/hwc2/hwc_layers.cpp +++ b/sdm/libs/hwc2/hwc_layers.cpp @@ -258,14 +258,21 @@ HWC2::Error HWCLayer::SetLayerDataspace(int32_t dataspace) { HWC2::Error HWCLayer::SetLayerDisplayFrame(hwc_rect_t frame) { LayerRect dst_rect = {}; + SetRect(frame, &dst_rect); - if (layer_->dst_rect != dst_rect) { + if (dst_rect_ != dst_rect) { geometry_changes_ |= kDisplayFrame; - layer_->dst_rect = dst_rect; + dst_rect_ = dst_rect; } + return HWC2::Error::None; } +void HWCLayer::ResetPerFrameData() { + layer_->dst_rect = dst_rect_; + layer_->transform = layer_transform_; +} + HWC2::Error HWCLayer::SetLayerPlaneAlpha(float alpha) { // Conversion of float alpha in range 0.0 to 1.0 similar to the HWC Adapter uint8_t plane_alpha = static_cast<uint8_t>(std::round(255.0f * alpha)); @@ -322,10 +329,11 @@ HWC2::Error HWCLayer::SetLayerTransform(HWC2::Transform transform) { break; } - if (layer_->transform != layer_transform) { + if (layer_transform_ != layer_transform) { geometry_changes_ |= kTransform; - layer_->transform = layer_transform; + layer_transform_ = layer_transform; } + return HWC2::Error::None; } |