summaryrefslogtreecommitdiff
authorStark Li <stark.li@amlogic.com>2016-10-10 06:27:35 (GMT)
committer Stark Li <stark.li@amlogic.com>2016-10-10 06:27:35 (GMT)
commitf6e1358e553cb11ad88ce21d9e147820a7a7b1e2 (patch)
tree4fbb81680eff565f560a5d2330d32dd729acadff
parentc2d8ba873be740d5a263181d97d94c824c5e8d0a (diff)
downloadhwcomposer-f6e1358e553cb11ad88ce21d9e147820a7a7b1e2.zip
hwcomposer-f6e1358e553cb11ad88ce21d9e147820a7a7b1e2.tar.gz
hwcomposer-f6e1358e553cb11ad88ce21d9e147820a7a7b1e2.tar.bz2
PD#132646: set video axis when displayframe size is change
Change-Id: I96a6482d8aa234666118bc196bca783722b5af14
Diffstat
-rw-r--r--hwc2/common/base/HwcLayer.cpp14
-rw-r--r--hwc2/common/base/HwcLayer.h2
2 files changed, 14 insertions, 2 deletions
diff --git a/hwc2/common/base/HwcLayer.cpp b/hwc2/common/base/HwcLayer.cpp
index 85b9f5d..248cddf 100644
--- a/hwc2/common/base/HwcLayer.cpp
+++ b/hwc2/common/base/HwcLayer.cpp
@@ -188,8 +188,13 @@ void HwcLayer::presentOverlay() {
axis_changed = Utils::checkSysfsStatus(SYSFS_VIDEO_AXIS, mLastAxis, 32);
window_axis_changed = Utils::checkSysfsStatus(SYSFS_WINDOW_AXIS, mLastWindowaxis, 50);
- if (!vpp_changed && !mode_changed && !axis_changed && !free_scale_changed
- && !window_axis_changed) {
+ if (mLastTransform == mTransform
+ && mLastDisplayFrame.left == mDisplayFrame.left
+ && mLastDisplayFrame.top == mDisplayFrame.top
+ && mLastDisplayFrame.right == mDisplayFrame.right
+ && mLastDisplayFrame.bottom== mDisplayFrame.bottom
+ && !vpp_changed && !mode_changed && !axis_changed
+ && !free_scale_changed && !window_axis_changed) {
return;
}
@@ -220,6 +225,11 @@ void HwcLayer::presentOverlay() {
*/
/*set screen_mode in amvideo_utils_set_virtual_position(),pls check in libplayer*/
//amvideo_utils_set_screen_mode(0);
+ mLastTransform = mTransform;
+ mLastDisplayFrame.left = mDisplayFrame.left;
+ mLastDisplayFrame.top = mDisplayFrame.top;
+ mLastDisplayFrame.right = mDisplayFrame.right;
+ mLastDisplayFrame.bottom = mDisplayFrame.bottom;
memset(mLastAxis, 0, sizeof(mLastAxis));
if (amsysfs_get_sysfs_str(SYSFS_VIDEO_AXIS, mLastAxis, sizeof(mLastAxis)) == 0) {
diff --git a/hwc2/common/base/HwcLayer.h b/hwc2/common/base/HwcLayer.h
index b4ff6dd..50c6d35 100644
--- a/hwc2/common/base/HwcLayer.h
+++ b/hwc2/common/base/HwcLayer.h
@@ -61,9 +61,11 @@ class HwcLayer {
int32_t mDataSpace;
float mPlaneAlpha;
int32_t mTransform;
+ int32_t mLastTransform;
uint32_t mZ;
hwc_frect_t mSourceCrop;
hwc_rect_t mDisplayFrame;
+ hwc_rect_t mLastDisplayFrame;
hwc_region_t mDamageRegion;
hwc_region_t mVisibleRegion;