Put the one pixel rendering work back to the server to handle if the pMsk is 
not zero

*exaScratch.srcWidth and exaScratch.srcHeight are used to reocrd
mask's width and mask's height if mask is not zero. So the one pixel
source's width and height are missing in lx_do_composite. So we must
fallback. Otherwise, bigger region will be wrongly rendered.

Signed-off-by: Frank Huang <[email protected]>
---
 src/lx_exa.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/lx_exa.c b/src/lx_exa.c
index a70766f..5d95e26 100644
--- a/src/lx_exa.c
+++ b/src/lx_exa.c
@@ -605,6 +605,12 @@ lx_check_composite(int op, PicturePtr pSrc, PicturePtr 
pMsk, PicturePtr pDst)
        /* The pSrc should be 1x1 pixel if the pMsk is not zero */
        if (pSrc->pDrawable->width != 1 || pSrc->pDrawable->height != 1)
            return FALSE;
+       /* FIXME: In lx_prepare_composite, there are no variables to record the
+        * one pixel source's width and height when the mask is not zero.
+        * That will lead to bigger region to render instead of one pixel in lx
+        * _do_composite, so we should fallback currently to avoid this */
+       if (!pSrc->repeat)
+           return FALSE;
     }
 
     /* Get the formats for the source and destination */
-- 
1.7.1


_______________________________________________
Xorg-driver-geode mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-geode

Reply via email to