From 80d22ea13a549cc70a44eca1407933a1efdaeddc Mon Sep 17 00:00:00 2001 From: Herb Derby Date: Tue, 24 Jan 2017 11:01:59 -0500 Subject: [PATCH] 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 Commit-Queue: Herb Derby --- src/core/SkGlyphCache.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/core/SkGlyphCache.h b/src/core/SkGlyphCache.h index ab1c9ba89f..4140bc5cd8 100644 --- a/src/core/SkGlyphCache.h +++ b/src/core/SkGlyphCache.h @@ -237,18 +237,16 @@ private: SkTHashTable 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 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 {