347 int Font::emphasisMarkAscent(const AtomicString& mark) const
348 {
349 FontCachePurgePreventer purgePreventer; <======= こんな感じで使われてる。
このオブジェクトが消えるとき、パージが動く。
350
351 GlyphData markGlyphData;
352 if (!getEmphasisMarkGlyphData(mark, markGlyphData))
353 return 0;
354
355 const SimpleFontData* markFontData = markGlyphData.fontData;
356 ASSERT(markFontData);
357 if (!markFontData)
358 return 0;
359
360 return markFontData->fontMetrics().ascent();
361 }
149 class FontCachePurgePreventer {
150 public:
151 FontCachePurgePreventer() {
fontCache()->disablePurging();
}
152 ~FontCachePurgePreventer() {
fontCache()->enablePurging(); <===== purge
}
153 };
154
155 }
113 FontCache();
114 ~FontCache();
115
116 void disablePurging() { m_purgePreventCount++; }
117 void enablePurging()
118 {
119 ASSERT(m_purgePreventCount);
120 if (!--m_purgePreventCount)
121 purgeInactiveFontDataIfNeeded(); <=====
122 }
363 void FontCache::purgeInactiveFontDataIfNeeded()
364 {
365 if (gInactiveFontData && !m_purgePreventCount && gInactiveFontData->size() > cMaxInactiveFontData)
366 purgeInactiveFontData(gInactiveFontData->size() - cTargetInactiveFontData); <==============
367 }