summaryrefslogtreecommitdiffstats
path: root/libs/hwui/DisplayListOp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/DisplayListOp.h')
-rw-r--r--libs/hwui/DisplayListOp.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/libs/hwui/DisplayListOp.h b/libs/hwui/DisplayListOp.h
index 105f45f..4e6b552 100644
--- a/libs/hwui/DisplayListOp.h
+++ b/libs/hwui/DisplayListOp.h
@@ -1169,6 +1169,7 @@ public:
break;
}
mLocalBounds.set(x, mY + metrics.fTop, x + length, mY + metrics.fBottom);
+ memset(&mPrecacheTransform.data[0], 0xff, 16 * sizeof(float));
}
/*
@@ -1179,9 +1180,11 @@ public:
virtual void onDrawOpDeferred(OpenGLRenderer& renderer) {
SkPaint* paint = getPaint(renderer);
FontRenderer& fontRenderer = renderer.getCaches().fontRenderer->getFontRenderer(paint);
- const bool pureTranslate = state.mMatrix.isPureTranslate();
- const mat4 transform = renderer.findBestFontTransform(state.mMatrix);
- fontRenderer.precache(paint, mText, mCount, transform);
+ const mat4& transform = renderer.findBestFontTransform(state.mMatrix);
+ if (mPrecacheTransform != transform) {
+ fontRenderer.precache(paint, mText, mCount, transform);
+ mPrecacheTransform = transform;
+ }
}
virtual status_t applyDraw(OpenGLRenderer& renderer, Rect& dirty, uint32_t level,
@@ -1210,6 +1213,7 @@ private:
float mY;
const float* mPositions;
float mLength;
+ mat4 mPrecacheTransform;
};
///////////////////////////////////////////////////////////////////////////////