diff options
author | scroggo <scroggo@google.com> | 2016-05-12 06:22:30 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-12 06:22:30 -0700 |
commit | 9a9a7b29e5e5916a7b6453cd124ca437f14b9da4 (patch) | |
tree | ad5b560f6ed5da12040e5665282fd2227c305ff8 /gm/variedtext.cpp | |
parent | a1b283345b27fef91908b104a30cb89e6fbdaade (diff) |
Revert of Move SkTypeface to sk_sp. (patchset #5 id:80001 of https://codereview.chromium.org/1933393002/ )
Reason for revert:
fontmgr_iterAndroid failing to draw emoji. E.g. 6296da736fbf40aae881650c239420f64e576c3f&unt=true&head=true&query=source_type%3Dgm">https://gold.skia.org/search2?blame=6296da736fbf40aae881650c239420f64e576c3f&unt=true&head=true&query=source_type%3Dgm
Original issue's description:
> Move SkTypeface to sk_sp.
>
> Committed: https://skia.googlesource.com/skia/+/6296da736fbf40aae881650c239420f64e576c3f
TBR=reed@google.com,fmalita@chromium.org,tomhudson@google.com,bungeman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review-Url: https://codereview.chromium.org/1974783002
Diffstat (limited to 'gm/variedtext.cpp')
-rw-r--r-- | gm/variedtext.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp index e295cbc998..83fe7201fd 100644 --- a/gm/variedtext.cpp +++ b/gm/variedtext.cpp @@ -21,6 +21,13 @@ public: VariedTextGM(bool effectiveClip, bool lcd) : fEffectiveClip(effectiveClip) , fLCD(lcd) { + memset(fTypefacesToUnref, 0, sizeof(fTypefacesToUnref)); + } + + ~VariedTextGM() { + for (size_t i = 0; i < SK_ARRAY_COUNT(fTypefacesToUnref); ++i) { + SkSafeUnref(fTypefacesToUnref[i]); + } } protected: @@ -51,11 +58,11 @@ protected: SkScalar w = SkIntToScalar(size.fWidth); SkScalar h = SkIntToScalar(size.fHeight); - static_assert(4 == SK_ARRAY_COUNT(fTypefaces), "typeface_cnt"); - fTypefaces[0] = sk_tool_utils::create_portable_typeface("sans-serif", SkTypeface::kNormal); - fTypefaces[1] = sk_tool_utils::create_portable_typeface("sans-serif", SkTypeface::kBold); - fTypefaces[2] = sk_tool_utils::create_portable_typeface("serif", SkTypeface::kNormal); - fTypefaces[3] = sk_tool_utils::create_portable_typeface("serif", SkTypeface::kBold); + static_assert(4 == SK_ARRAY_COUNT(fTypefacesToUnref), "typeface_cnt"); + fTypefacesToUnref[0] = sk_tool_utils::create_portable_typeface("sans-serif", SkTypeface::kNormal); + fTypefacesToUnref[1] = sk_tool_utils::create_portable_typeface("sans-serif", SkTypeface::kBold); + fTypefacesToUnref[2] = sk_tool_utils::create_portable_typeface("serif", SkTypeface::kNormal); + fTypefacesToUnref[3] = sk_tool_utils::create_portable_typeface("serif", SkTypeface::kBold); SkRandom random; for (int i = 0; i < kCnt; ++i) { @@ -75,11 +82,12 @@ protected: fPtSizes[i] = random.nextRangeScalar(kMinPtSize, kMaxPtSize); - fTypefaceIndices[i] = random.nextULessThan(SK_ARRAY_COUNT(fTypefaces)); + fTypefaces[i] = fTypefacesToUnref[ + random.nextULessThan(SK_ARRAY_COUNT(fTypefacesToUnref))]; SkRect r; fPaint.setColor(fColors[i]); - fPaint.setTypeface(fTypefaces[fTypefaceIndices[i]]); + fPaint.setTypeface(fTypefaces[i]); fPaint.setTextSize(fPtSizes[i]); fPaint.measureText(fStrings[i].c_str(), fStrings[i].size(), &r); @@ -108,7 +116,7 @@ protected: for (int i = 0; i < kCnt; ++i) { fPaint.setColor(fColors[i]); fPaint.setTextSize(fPtSizes[i]); - fPaint.setTypeface(fTypefaces[fTypefaceIndices[i]]); + fPaint.setTypeface(fTypefaces[i]); canvas->save(); canvas->clipRect(fClipRects[i]); @@ -138,14 +146,14 @@ private: bool fEffectiveClip; bool fLCD; - sk_sp<SkTypeface> fTypefaces[4]; + SkTypeface* fTypefacesToUnref[4]; SkPaint fPaint; // precomputed for each text draw SkString fStrings[kCnt]; SkColor fColors[kCnt]; SkScalar fPtSizes[kCnt]; - int fTypefaceIndices[kCnt]; + SkTypeface* fTypefaces[kCnt]; SkPoint fPositions[kCnt]; SkRect fClipRects[kCnt]; |