Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf3289cd authored by Mathias Agopian's avatar Mathias Agopian Committed by Android Git Automerger
Browse files

am c421fc2a: Merge change Id09376d1 into eclair

Merge commit 'c421fc2ada7c1bff104733b840bd640151bebbbb' into eclair-mr2

* commit 'c421fc2ada7c1bff104733b840bd640151bebbbb':
  fix [2071412] work around mdp 32-bits fade limitation
parents f58a771a 4611a1b8
Loading
Loading
Loading
Loading
+23 −4
Original line number Original line Diff line number Diff line
@@ -388,14 +388,33 @@ static bool copybit(GLint x, GLint y,


        copybit_image_t tmpCbImg;
        copybit_image_t tmpCbImg;
        copybit_rect_t tmpCbRect;
        copybit_rect_t tmpCbRect;
        copybit_rect_t tmpdrect = drect;
        tmpCbImg.w = w;
        tmpCbImg.w = w;
        tmpCbImg.h = h;
        tmpCbImg.h = h;
        tmpCbImg.format = tempCb->format;
        tmpCbImg.format = tempCb->format;
        tmpCbImg.handle = (native_handle_t*)tempCb->getNativeBuffer()->handle;
        tmpCbImg.handle = (native_handle_t*)tempCb->getNativeBuffer()->handle;
        tmpCbRect.l = 0;
        tmpCbRect.l = 0;
        tmpCbRect.t = 0;
        tmpCbRect.t = 0;
        tmpCbRect.r = w;

        tmpCbRect.b = h;
        if (drect.l < 0) {
            tmpCbRect.l = -tmpdrect.l;
            tmpdrect.l = 0;
        }
        if (drect.t < 0) {
            tmpCbRect.t = -tmpdrect.t;
            tmpdrect.t = 0;
        }
        if (drect.l + tmpCbImg.w > dst.w) {
            tmpCbImg.w = dst.w - drect.l;
            tmpdrect.r = dst.w;
        }
        if (drect.t + tmpCbImg.h > dst.h) {
            tmpCbImg.h = dst.h - drect.t;
            tmpdrect.b = dst.h;
        }

        tmpCbRect.r = tmpCbImg.w;
        tmpCbRect.b = tmpCbImg.h;


        if (!err) {
        if (!err) {
            // first make a copy of the destination buffer
            // first make a copy of the destination buffer
@@ -404,7 +423,7 @@ static bool copybit(GLint x, GLint y,
            copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 0xFF);
            copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 0xFF);
            copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_DISABLE);
            copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_DISABLE);
            err = copybit->stretch(copybit,
            err = copybit->stretch(copybit,
                    &tmpCbImg, &dst, &tmpCbRect, &drect, &tmp_it);
                    &tmpCbImg, &dst, &tmpCbRect, &tmpdrect, &tmp_it);
        }
        }
        if (!err) {
        if (!err) {
            // then proceed as usual, but without the alpha plane
            // then proceed as usual, but without the alpha plane
@@ -424,7 +443,7 @@ static bool copybit(GLint x, GLint y,
            copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, invPlaneAlpha);
            copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, invPlaneAlpha);
            copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE);
            copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE);
            err = copybit->stretch(copybit,
            err = copybit->stretch(copybit,
                    &dst, &tmpCbImg, &drect, &tmpCbRect, &it);
                    &dst, &tmpCbImg, &tmpdrect, &tmpCbRect, &it);
        }
        }
    } else {
    } else {
        copybit->set_parameter(copybit, COPYBIT_TRANSFORM, transform);
        copybit->set_parameter(copybit, COPYBIT_TRANSFORM, transform);