aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPaint.cpp
diff options
context:
space:
mode:
authorGravatar Herb Derby <herb@google.com>2018-03-09 11:35:47 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-09 17:45:40 +0000
commit33cb22cb2b60255a2755cc88072490fe8d05b0b9 (patch)
tree1d68ad9fba801d28f065b3055a3d1d808f89e131 /src/core/SkPaint.cpp
parent41a3b87846553e9d77e0e113bfaf4ec74a068e96 (diff)
Remove one use of AttachCache, and a paint variant of FindOrCreate...
This is a point change to see if it causes bad draws using config gldft. Checked with skdiff on that config. Change-Id: Ibee4630df21456ba9dccf28480bded82d1d9bf47 Reviewed-on: https://skia-review.googlesource.com/113204 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'src/core/SkPaint.cpp')
-rw-r--r--src/core/SkPaint.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 1fd3bf55db..f059fc3474 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1748,9 +1748,9 @@ SkTextBaseIter::SkTextBaseIter(const char text[], size_t length,
}
// SRGBTODO: Is this correct?
- fCache = SkGlyphCache::DetachCacheUsingPaint(fPaint, nullptr,
- SkScalerContextFlags::kFakeGammaAndBoostContrast,
- nullptr);
+ fCache = SkGlyphCache::FindOrCreateStrikeExclusive(
+ fPaint, nullptr,
+ SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
SkPaint::Style style = SkPaint::kFill_Style;
sk_sp<SkPathEffect> pe;
@@ -1768,7 +1768,7 @@ SkTextBaseIter::SkTextBaseIter(const char text[], size_t length,
SkScalar xOffset = 0;
if (paint.getTextAlign() != SkPaint::kLeft_Align) { // need to measure first
int count;
- SkScalar width = fPaint.measure_text(fCache, text, length, &count, nullptr) * fScale;
+ SkScalar width = fPaint.measure_text(fCache.get(), text, length, &count, nullptr) * fScale;
if (paint.getTextAlign() == SkPaint::kCenter_Align) {
width = SkScalarHalf(width);
}
@@ -1783,13 +1783,9 @@ SkTextBaseIter::SkTextBaseIter(const char text[], size_t length,
fXYIndex = paint.isVerticalText() ? 1 : 0;
}
-SkTextBaseIter::~SkTextBaseIter() {
- SkGlyphCache::AttachCache(fCache);
-}
-
bool SkTextToPathIter::next(const SkPath** path, SkScalar* xpos) {
if (fText < fStop) {
- const SkGlyph& glyph = fGlyphCacheProc(fCache, &fText);
+ const SkGlyph& glyph = fGlyphCacheProc(fCache.get(), &fText);
fXPos += (fPrevAdvance + fAutoKern.adjust(glyph)) * fScale;
fPrevAdvance = advance(glyph, fXYIndex); // + fPaint.getTextTracking();
@@ -1812,7 +1808,7 @@ bool SkTextToPathIter::next(const SkPath** path, SkScalar* xpos) {
}
bool SkTextInterceptsIter::next(SkScalar* array, int* count) {
- const SkGlyph& glyph = fGlyphCacheProc(fCache, &fText);
+ const SkGlyph& glyph = fGlyphCacheProc(fCache.get(), &fText);
fXPos += (fPrevAdvance + fAutoKern.adjust(glyph)) * fScale;
fPrevAdvance = advance(glyph, fXYIndex); // + fPaint.getTextTracking();
if (fCache->findPath(glyph)) {