Do not embed glyph image data in SkGlyphCache.
Instead of allocating memory for glyph images eagerly by embedding
the memory in the glyph cache, allocate memory dynamically on need.
TBR=bungeman@google.com
BUG=chromium:684366
Change-Id: If32bbc4d2608c976b93868feb519dcfa1212ce59
Reviewed-on: https://skia-review.googlesource.com/7433
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
diff --git a/src/core/SkGlyphCache.h b/src/core/SkGlyphCache.h
index ab1c9ba..4140bc5 100644
--- a/src/core/SkGlyphCache.h
+++ b/src/core/SkGlyphCache.h
@@ -237,18 +237,16 @@
SkTHashTable<SkGlyph, SkPackedGlyphID, SkGlyph::HashTraits> fGlyphMap;
// so we don't grow our arrays a lot
- static constexpr size_t kMinGlyphCount = 16;
- static constexpr size_t kMinGlyphImageSize = (16*2);
- static constexpr size_t kMinAllocAmount
- = ((sizeof(SkGlyph) + kMinGlyphImageSize) * kMinGlyphCount);
+ static constexpr size_t kMinGlyphCount = 8;
+ static constexpr size_t kMinGlyphImageSize = 16 /* height */ * 8 /* width */;
+ static constexpr size_t kMinAllocAmount = kMinGlyphImageSize * kMinGlyphCount;
- char storage[kMinAllocAmount];
- SkArenaAlloc fAlloc {storage};
+ SkArenaAlloc fAlloc {kMinAllocAmount};
std::unique_ptr<CharGlyphRec[]> fPackedUnicharIDToPackedGlyphID;
// used to track (approx) how much ram is tied-up in this cache
- size_t fMemoryUsed;
+ size_t fMemoryUsed;
};
class SkAutoGlyphCache : public std::unique_ptr<SkGlyphCache, SkGlyphCache::AttachCacheFunctor> {