hwc: video: Create crop and position structs only once.
Create crop and position structs only once.
Fix bug where x and y were not updated.
Change-Id: I7c6a873ba207997baa302b8999bdaf34cc938dba
diff --git a/libhwcomposer/hwc_video.cpp b/libhwcomposer/hwc_video.cpp
index 38ac695..bedd9e9 100644
--- a/libhwcomposer/hwc_video.cpp
+++ b/libhwcomposer/hwc_video.cpp
@@ -130,17 +130,7 @@
ov.setSource(pargs, ovutils::OV_PIPE0);
hwc_rect_t sourceCrop = layer->sourceCrop;
- // x,y,w,h
- ovutils::Dim dcrop(sourceCrop.left, sourceCrop.top,
- sourceCrop.right - sourceCrop.left,
- sourceCrop.bottom - sourceCrop.top);
-
- ovutils::Dim dpos;
hwc_rect_t displayFrame = layer->displayFrame;
- dpos.x = displayFrame.left;
- dpos.y = displayFrame.top;
- dpos.w = (displayFrame.right - displayFrame.left);
- dpos.h = (displayFrame.bottom - displayFrame.top);
//Calculate the rect for primary based on whether the supplied position
//is within or outside bounds.
@@ -153,19 +143,13 @@
displayFrame.top < 0 ||
displayFrame.right > fbWidth ||
displayFrame.bottom > fbHeight) {
-
calculate_crop_rects(sourceCrop, displayFrame, fbWidth, fbHeight);
-
- //Update calculated width and height
- dcrop.w = sourceCrop.right - sourceCrop.left;
- dcrop.h = sourceCrop.bottom - sourceCrop.top;
-
- dpos.x = displayFrame.left;
- dpos.y = displayFrame.top;
- dpos.w = displayFrame.right - displayFrame.left;
- dpos.h = displayFrame.bottom - displayFrame.top;
}
+ // source crop x,y,w,h
+ ovutils::Dim dcrop(sourceCrop.left, sourceCrop.top,
+ sourceCrop.right - sourceCrop.left,
+ sourceCrop.bottom - sourceCrop.top);
//Only for Primary
ov.setCrop(dcrop, ovutils::OV_PIPE0);
@@ -174,6 +158,11 @@
static_cast<ovutils::eTransform>(transform);
ov.setTransform(orient, ovutils::OV_PIPE0);
+ // position x,y,w,h
+ ovutils::Dim dpos(displayFrame.left,
+ displayFrame.top,
+ displayFrame.right - displayFrame.left,
+ displayFrame.bottom - displayFrame.top);
ov.setPosition(dpos, ovutils::OV_PIPE0);
if (!ov.commit(ovutils::OV_PIPE0)) {