hwc: fix dst calculations for right mixer
The calculations made for the right mixer was not correct,
fixed it for both FBUpdate and video usecases
Change-Id: Iff2c296321bce14b776731528fff6f1d255d829a
diff --git a/libhwcomposer/hwc_fbupdate.cpp b/libhwcomposer/hwc_fbupdate.cpp
index f7fce09..7a740ee 100644
--- a/libhwcomposer/hwc_fbupdate.cpp
+++ b/libhwcomposer/hwc_fbupdate.cpp
@@ -228,12 +228,16 @@
hwc_rect_t displayFrame = sourceCrop;
//For FB left, top will always be 0
//That should also be the case if using 2 mixers for single display
- ovutils::Dim dpos(displayFrame.left,
+ ovutils::Dim dposL(displayFrame.left,
displayFrame.top,
(displayFrame.right - displayFrame.left) / 2,
displayFrame.bottom - displayFrame.top);
- ov.setPosition(dpos, destL);
- ov.setPosition(dpos, destR);
+ ov.setPosition(dposL, destL);
+ ovutils::Dim dposR(0,
+ displayFrame.top,
+ (displayFrame.right - displayFrame.left) / 2,
+ displayFrame.bottom - displayFrame.top);
+ ov.setPosition(dposR, destR);
ret = true;
if (!ov.commit(destL)) {
diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index 013833f..f9b1afc 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -798,6 +798,8 @@
if(rDest != OV_INVALID) {
PipeArgs pargR(mdpFlagsR, whf, z, isFg,
static_cast<eRotFlags>(rotFlags));
+ tmp_dstR.right = tmp_dstR.right - tmp_dstR.left;
+ tmp_dstR.left = 0;
if(configMdp(ctx->mOverlay, pargR, orient,
tmp_cropR, tmp_dstR, rDest) < 0) {
ALOGE("%s: commit failed for right mixer config", __FUNCTION__);