From e684abd1ec88fa2ebd949f6cee39412d6c7a66a1 Mon Sep 17 00:00:00 2001 From: Saurabh Shah Date: Wed, 5 Sep 2012 18:45:59 -0700 Subject: [PATCH] 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 --- libhwcomposer/hwc_video.cpp | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/libhwcomposer/hwc_video.cpp b/libhwcomposer/hwc_video.cpp index cbfcd8e..2dcb0cf 100644 --- a/libhwcomposer/hwc_video.cpp +++ b/libhwcomposer/hwc_video.cpp @@ -130,17 +130,7 @@ bool configPrimVid(hwc_context_t *ctx, hwc_layer_t *layer) { 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 @@ bool configPrimVid(hwc_context_t *ctx, hwc_layer_t *layer) { 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 @@ bool configPrimVid(hwc_context_t *ctx, hwc_layer_t *layer) { static_cast(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)) {