Fix race in SkTypeface_FreeType::onCountGlyphs.
Found by TSAN. This makes the operation slightly slower, but it is not on any user's hot path. BUG=skia:5238 Review-Url: https://codereview.chromium.org/1940613002
This commit is contained in:
parent
4d9ff62fa2
commit
572f879b61
@ -1526,14 +1526,9 @@ int SkTypeface_FreeType::onCharsToGlyphs(const void* chars, Encoding encoding,
|
||||
}
|
||||
|
||||
int SkTypeface_FreeType::onCountGlyphs() const {
|
||||
// we cache this value, using -1 as a sentinel for "not computed"
|
||||
if (fGlyphCount < 0) {
|
||||
AutoFTAccess fta(this);
|
||||
FT_Face face = fta.face();
|
||||
// if the face failed, we still assign a non-negative value
|
||||
fGlyphCount = face ? face->num_glyphs : 0;
|
||||
}
|
||||
return fGlyphCount;
|
||||
AutoFTAccess fta(this);
|
||||
FT_Face face = fta.face();
|
||||
return face ? face->num_glyphs : 0;
|
||||
}
|
||||
|
||||
SkTypeface::LocalizedStrings* SkTypeface_FreeType::onCreateFamilyNameIterator() const {
|
||||
|
@ -73,7 +73,6 @@ public:
|
||||
protected:
|
||||
SkTypeface_FreeType(const SkFontStyle& style, SkFontID uniqueID, bool isFixedPitch)
|
||||
: INHERITED(style, uniqueID, isFixedPitch)
|
||||
, fGlyphCount(-1)
|
||||
{}
|
||||
|
||||
virtual SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&,
|
||||
@ -95,8 +94,6 @@ protected:
|
||||
size_t length, void* data) const override;
|
||||
|
||||
private:
|
||||
mutable int fGlyphCount;
|
||||
|
||||
typedef SkTypeface INHERITED;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user