diff options
author | Bernhard Rosenkraenzer <bero@arklinux.org> | 2009-01-13 10:35:19 -0800 |
---|---|---|
committer | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2009-01-14 10:59:35 +0800 |
commit | 7c5afbbd3e7570224ceb4fa793fe230fd3a383fe (patch) | |
tree | 2011d041cf5a6f167bc11bf3640e6b2bd968a126 | |
parent | c0bc3cf128d8e9e1ed643be1586593d42c8f5b49 (diff) |
UXA: Declare glyph cache picture as component-alpha when necessary.
Without this, rendering component-alpha glyphs may break without a mask.
Bug #19534. Ported from fix by Michel Dänzer <daenzer@vmware.com> in
xserver commit 639f289dcdbe00a516820f573c01a8339e120ed4
(cherry picked from commit c80f1a9c5131721eaf87d12a7a67e603cdfed63b)
-rw-r--r-- | uxa/uxa-glyphs.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c index dd26362e..1c06e6d2 100644 --- a/uxa/uxa-glyphs.c +++ b/uxa/uxa-glyphs.c @@ -140,6 +140,8 @@ uxa_unrealize_glyph_caches(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 @@ -158,6 +160,7 @@ uxa_realize_glyph_caches(ScreenPtr pScreen, PictFormatPtr pPictFormat; PixmapPtr pPixmap; PicturePtr pPicture; + CARD32 component_alpha; int height; int i; int error; @@ -190,8 +193,10 @@ uxa_realize_glyph_caches(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 */ @@ -729,8 +734,6 @@ uxa_glyphs_intersect(int nlist, GlyphListPtr list, GlyphPtr *glyphs) return FALSE; } -#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0) - void uxa_glyphs (CARD8 op, PicturePtr pSrc, |