[PATCH xserver] EXA: Honour op parameter to exaGlyphs even if maskFormat == NULL
Michel Dänzer
michel at daenzer.net
Fri Apr 1 09:19:51 UTC 2016
On 01.04.2016 18:11, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Reported by psychon_ on IRC.
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
>
> Only compiled tested.
>
> exa/exa_glyphs.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c
> index cf21ea9..192a643 100644
> --- a/exa/exa_glyphs.c
> +++ b/exa/exa_glyphs.c
> @@ -618,9 +618,9 @@ exaGlyphsToMask(PicturePtr pMask, ExaGlyphBufferPtr buffer)
> }
>
> static void
> -exaGlyphsToDst(PicturePtr pSrc, PicturePtr pDst, ExaGlyphBufferPtr buffer)
> +exaGlyphsToDst(CARD8 op, PicturePtr pSrc, PicturePtr pDst, ExaGlyphBufferPtr buffer)
> {
> - exaCompositeRects(PictOpOver, pSrc, buffer->mask, pDst, buffer->count,
> + exaCompositeRects(op, pSrc, buffer->mask, pDst, buffer->count,
> buffer->rects);
>
> buffer->count = 0;
> @@ -801,7 +801,7 @@ exaGlyphs(CARD8 op,
> 0, 0, x - glyph->info.x,
> y - glyph->info.y)
> == ExaGlyphNeedFlush) {
> - exaGlyphsToDst(pSrc, pDst, &buffer);
> + exaGlyphsToDst(op, pSrc, pDst, &buffer);
> exaBufferGlyph(pScreen, &buffer, glyph, pSrc, pDst,
> xSrc + (x - glyph->info.x) - first_xOff,
> ySrc + (y - glyph->info.y) - first_yOff,
> @@ -821,7 +821,7 @@ exaGlyphs(CARD8 op,
> if (maskFormat)
> exaGlyphsToMask(pMask, &buffer);
> else
> - exaGlyphsToDst(pSrc, pDst, &buffer);
> + exaGlyphsToDst(op, pSrc, pDst, &buffer);
> }
>
> if (maskFormat) {
>
https://bugs.freedesktop.org/show_bug.cgi?id=94775 raises an interesting
issue: Could this break with some operations and intermediate flushes /
overlapping glyphs? If so, I suspect glamor_composite_glyphs would be
affected by that as well.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-devel
mailing list