From 32228288a957f3823df92365bc709ad6f42b012e Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Tue, 11 Jan 2011 15:02:21 -0800 Subject: [PATCH] Solve translucency issue when drawing paths. Change-Id: I68ae0e2ccddaca2f76b5b2dd3e3cf1277fddaad6 --- libs/hwui/PathCache.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp index 8740a64601ae4..3184598d48c44 100644 --- a/libs/hwui/PathCache.cpp +++ b/libs/hwui/PathCache.cpp @@ -197,10 +197,16 @@ PathTexture* PathCache::addTexture(const PathCacheEntry& entry, bitmap.eraseColor(0); SkPaint pathPaint(*paint); - if (!pathPaint.getXfermode()) { - SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrc_Mode); - pathPaint.setXfermode(mode)->safeUnref(); - } + + // Make sure the paint is opaque, color, alpha, filter, etc. + // will be applied later when compositing the alpha8 texture + pathPaint.setColor(0xff000000); + pathPaint.setAlpha(255); + pathPaint.setColorFilter(NULL); + pathPaint.setMaskFilter(NULL); + pathPaint.setShader(NULL); + SkXfermode* mode = SkXfermode::Create(SkXfermode::kSrc_Mode); + pathPaint.setXfermode(mode)->safeUnref(); SkCanvas canvas(bitmap); canvas.translate(-bounds.fLeft + offset, -bounds.fTop + offset);