From 73483d9fbec9cfd1fd79e2cb8c255a22898d3743 Mon Sep 17 00:00:00 2001 From: joshualitt Date: Tue, 23 Dec 2014 07:58:02 -0800 Subject: fix for valgrind BUG=skia: Review URL: https://codereview.chromium.org/816103003 --- src/gpu/GrBitmapTextContext.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/gpu') diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp index 790590dbcc..94b2770b23 100755 --- a/src/gpu/GrBitmapTextContext.cpp +++ b/src/gpu/GrBitmapTextContext.cpp @@ -154,9 +154,10 @@ void GrBitmapTextContext::onDrawText(const GrPaint& paint, const SkPaint& skPain SkFixed fx = SkScalarToFixed(x) + halfSampleX; SkFixed fy = SkScalarToFixed(y) + halfSampleY; - // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix - if (kARGB_GrMaskFormat != fCurrMaskFormat && !viewMatrix.invert(&fLocalMatrix)) { - SkDebugf("Cannot invert viewmatrix\n"); + // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix, but for + // performance reasons we just invert here instead + if (!viewMatrix.invert(&fLocalMatrix)) { + SkDebugf("Cannot invert viewmatrix\n"); } while (text < stop) { @@ -201,11 +202,9 @@ void GrBitmapTextContext::onDrawPosText(const GrPaint& paint, const SkPaint& skP SkGlyphCache* cache = autoCache.getCache(); GrFontScaler* fontScaler = GetGrFontScaler(cache); - // store original matrix before we reset, so we can use it to transform positions - SkMatrix ctm = viewMatrix; - - // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix - if (kARGB_GrMaskFormat != fCurrMaskFormat && !viewMatrix.invert(&fLocalMatrix)) { + // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix, but for + // performance reasons we just invert here instead + if (!viewMatrix.invert(&fLocalMatrix)) { SkDebugf("Cannot invert viewmatrix\n"); } @@ -214,12 +213,12 @@ void GrBitmapTextContext::onDrawPosText(const GrPaint& paint, const SkPaint& skP const char* stop = text + byteLength; SkTextAlignProc alignProc(fSkPaint.getTextAlign()); - SkTextMapStateProc tmsProc(ctm, offset, scalarsPerPosition); + SkTextMapStateProc tmsProc(viewMatrix, offset, scalarsPerPosition); SkFixed halfSampleX = 0, halfSampleY = 0; if (cache->isSubpixel()) { // maybe we should skip the rounding if linearText is set - SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(ctm); + SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(viewMatrix); SkFixed fxMask = ~0; SkFixed fyMask = ~0; -- cgit v1.2.3