| Index: src/gpu/GrTextStrike.cpp
|
| diff --git a/src/gpu/GrTextStrike.cpp b/src/gpu/GrTextStrike.cpp
|
| index d1f1861abdc94ff21a4a9b8f1dd9ee8f641ebe7a..e399c91f6c5b9bdfc5416f0585628eb073894870 100644
|
| --- a/src/gpu/GrTextStrike.cpp
|
| +++ b/src/gpu/GrTextStrike.cpp
|
| @@ -103,7 +103,7 @@ void GrFontCache::purgeExceptFor(GrTextStrike* preserveStrike) {
|
| strike = strikeToPurge->fPrev;
|
| if (purge) {
|
| // keep purging if we won't free up any atlases with this strike.
|
| - purge = (NULL == strikeToPurge->fAtlas);
|
| + purge = strikeToPurge->fAtlas.isEmpty();
|
| int index = fCache.slowFindIndex(strikeToPurge);
|
| SkASSERT(index >= 0);
|
| fCache.removeAt(index, strikeToPurge->fFontScalerKey->getHash());
|
| @@ -116,7 +116,7 @@ void GrFontCache::purgeExceptFor(GrTextStrike* preserveStrike) {
|
| #endif
|
| }
|
|
|
| -void GrFontCache::freeAtlasExceptFor(GrTextStrike* preserveStrike) {
|
| +void GrFontCache::freePlotExceptFor(GrTextStrike* preserveStrike) {
|
| SkASSERT(NULL != preserveStrike);
|
| GrTextStrike* strike = fTail;
|
| GrMaskFormat maskFormat = preserveStrike->fMaskFormat;
|
| @@ -127,8 +127,8 @@ void GrFontCache::freeAtlasExceptFor(GrTextStrike* preserveStrike) {
|
| }
|
| GrTextStrike* strikeToPurge = strike;
|
| strike = strikeToPurge->fPrev;
|
| - if (strikeToPurge->removeUnusedAtlases()) {
|
| - if (NULL == strikeToPurge->fAtlas) {
|
| + if (strikeToPurge->removeUnusedPlots()) {
|
| + if (strikeToPurge->fAtlas.isEmpty()) {
|
| int index = fCache.slowFindIndex(strikeToPurge);
|
| SkASSERT(index >= 0);
|
| fCache.removeAt(index, strikeToPurge->fFontScalerKey->getHash());
|
| @@ -186,13 +186,12 @@ void GrFontCache::validate() const {
|
|
|
| GrTextStrike::GrTextStrike(GrFontCache* cache, const GrKey* key,
|
| GrMaskFormat format,
|
| - GrAtlasMgr* atlasMgr) : fPool(64) {
|
| + GrAtlasMgr* atlasMgr) : fPool(64), fAtlas(atlasMgr) {
|
| fFontScalerKey = key;
|
| fFontScalerKey->ref();
|
|
|
| fFontCache = cache; // no need to ref, it won't go away before we do
|
| fAtlasMgr = atlasMgr; // no need to ref, it won't go away before we do
|
| - fAtlas = NULL;
|
|
|
| fMaskFormat = format;
|
|
|
| @@ -207,13 +206,12 @@ GrTextStrike::GrTextStrike(GrFontCache* cache, const GrKey* key,
|
| static void free_glyph(GrGlyph*& glyph) { glyph->free(); }
|
|
|
| static void invalidate_glyph(GrGlyph*& glyph) {
|
| - if (glyph->fAtlas && glyph->fAtlas->drawToken().isIssued()) {
|
| - glyph->fAtlas = NULL;
|
| + if (glyph->fPlot && glyph->fPlot->drawToken().isIssued()) {
|
| + glyph->fPlot = NULL;
|
| }
|
| }
|
|
|
| GrTextStrike::~GrTextStrike() {
|
| - GrAtlas::FreeLList(fAtlas);
|
| fFontScalerKey->unref();
|
| fCache.getArray().visitAll(free_glyph);
|
|
|
| @@ -236,9 +234,9 @@ GrGlyph* GrTextStrike::generateGlyph(GrGlyph::PackedID packed,
|
| return glyph;
|
| }
|
|
|
| -bool GrTextStrike::removeUnusedAtlases() {
|
| +bool GrTextStrike::removeUnusedPlots() {
|
| fCache.getArray().visitAll(invalidate_glyph);
|
| - return GrAtlas::RemoveUnusedAtlases(fAtlasMgr, &fAtlas);
|
| + return fAtlasMgr->removeUnusedPlots(&fAtlas);
|
| }
|
|
|
| bool GrTextStrike::getGlyphAtlas(GrGlyph* glyph, GrFontScaler* scaler,
|
| @@ -251,8 +249,8 @@ bool GrTextStrike::getGlyphAtlas(GrGlyph* glyph, GrFontScaler* scaler,
|
| SkASSERT(glyph);
|
| SkASSERT(scaler);
|
| SkASSERT(fCache.contains(glyph));
|
| - if (glyph->fAtlas) {
|
| - glyph->fAtlas->setDrawToken(currentDrawToken);
|
| + if (glyph->fPlot) {
|
| + glyph->fPlot->setDrawToken(currentDrawToken);
|
| return true;
|
| }
|
|
|
| @@ -268,14 +266,14 @@ bool GrTextStrike::getGlyphAtlas(GrGlyph* glyph, GrFontScaler* scaler,
|
| return false;
|
| }
|
|
|
| - GrAtlas* atlas = fAtlasMgr->addToAtlas(&fAtlas, glyph->width(),
|
| - glyph->height(), storage.get(),
|
| - &glyph->fAtlasLocation);
|
| - if (NULL == atlas) {
|
| + GrPlot* plot = fAtlasMgr->addToAtlas(&fAtlas, glyph->width(),
|
| + glyph->height(), storage.get(),
|
| + &glyph->fAtlasLocation);
|
| + if (NULL == plot) {
|
| return false;
|
| }
|
|
|
| - glyph->fAtlas = atlas;
|
| - atlas->setDrawToken(currentDrawToken);
|
| + glyph->fPlot = plot;
|
| + plot->setDrawToken(currentDrawToken);
|
| return true;
|
| }
|
|
|