diff options
Diffstat (limited to 'libs/hwui/DisplayListOp.h')
| -rw-r--r-- | libs/hwui/DisplayListOp.h | 10 |
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; }; /////////////////////////////////////////////////////////////////////////////// |
