On 09/01/17 07:36 AM, Michael Lorenz wrote: > From: Michael Lorenz <[email protected]> > > Signed-off-by: Michael Lorenz <[email protected]> > --- > exa/exa_glyphs.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c > index 192a643cc..7386d05e9 100644 > --- a/exa/exa_glyphs.c > +++ b/exa/exa_glyphs.c > @@ -544,7 +544,6 @@ exaBufferGlyph(ScreenPtr pScreen, > INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst, INT16 yDst) > { > ExaScreenPriv(pScreen); > - unsigned int format = (GetGlyphPicture(pGlyph, pScreen))->format; > int width = pGlyph->info.width; > int height = pGlyph->info.height; > ExaCompositeRectPtr rect; > @@ -554,13 +553,10 @@ exaBufferGlyph(ScreenPtr pScreen, > if (buffer->count == GLYPH_BUFFER_SIZE) > return ExaGlyphNeedFlush; > > - if (PICT_FORMAT_BPP(format) == 1) > - format = PICT_a8; > - > for (i = 0; i < EXA_NUM_GLYPH_CACHES; i++) { > ExaGlyphCachePtr cache = &pExaScr->glyphCaches[i]; > > - if (format == cache->format && > + if (pDst->format == cache->format && > width <= cache->glyphWidth && height <= cache->glyphHeight) { > ExaGlyphCacheResult result = exaGlyphCacheBufferGlyph(pScreen, > &pExaScr-> >
Unfortunately, testing reveals that this doesn't work correctly in general when exaGlyphs is called with maskFormat == NULL, I suspect because pDst->format may not have any alpha bits here in that case. This results e.g. in some missing text in xfce4-terminal for me. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Mesa and X developer _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
