xserver: Branch 'master'
Michel Dänzer
daenzer at kemper.freedesktop.org
Tue Jan 13 04:14:20 PST 2009
exa/exa_glyphs.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
New commits:
commit 639f289dcdbe00a516820f573c01a8339e120ed4
Author: Michel Dänzer <daenzer at vmware.com>
Date: Tue Jan 13 13:05:32 2009 +0100
EXA: Declare glyph cache picture as component-alpha when necessary.
Without this, rendering component-alpha glyphs may break without a mask.
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=19233 .
diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c
index 169763f..688081d 100644
--- a/exa/exa_glyphs.c
+++ b/exa/exa_glyphs.c
@@ -140,6 +140,8 @@ exaUnrealizeGlyphCaches(ScreenPtr pScreen,
}
}
+#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0)
+
/* All caches for a single format share a single pixmap for glyph storage,
* allowing mixing glyphs of different sizes without paying a penalty
* for switching between source pixmaps. (Note that for a size of font
@@ -159,6 +161,7 @@ exaRealizeGlyphCaches(ScreenPtr pScreen,
PictFormatPtr pPictFormat;
PixmapPtr pPixmap;
PicturePtr pPicture;
+ CARD32 component_alpha;
int height;
int i;
int error;
@@ -191,8 +194,10 @@ exaRealizeGlyphCaches(ScreenPtr pScreen,
if (!pPixmap)
return FALSE;
+ component_alpha = NeedsComponent(pPictFormat->format);
pPicture = CreatePicture(0, &pPixmap->drawable, pPictFormat,
- 0, 0, serverClient, &error);
+ CPComponentAlpha, &component_alpha, serverClient,
+ &error);
(*pScreen->DestroyPixmap) (pPixmap); /* picture holds a refcount */
@@ -741,8 +746,6 @@ exaGlyphsIntersect(int nlist, GlyphListPtr list, GlyphPtr *glyphs)
return FALSE;
}
-#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0)
-
void
exaGlyphs (CARD8 op,
PicturePtr pSrc,
More information about the xorg-commit
mailing list