Index: src/gpu/GrAtlas.h |
diff --git a/src/gpu/GrAtlas.h b/src/gpu/GrAtlas.h |
index 40a21545e15e6e7d1d089a3eba6db51c274eb441..b6f25c210ab7fdccfa7a98a9b6ff1f22dfbc9341 100644 |
--- a/src/gpu/GrAtlas.h |
+++ b/src/gpu/GrAtlas.h |
@@ -20,8 +20,6 @@ class GrAtlasMgr; |
class GrAtlas { |
public: |
- GrAtlas(GrAtlasMgr*, int plotX, int plotY, GrMaskFormat); |
- |
int getPlotX() const { return fPlot.fX; } |
int getPlotY() const { return fPlot.fY; } |
GrMaskFormat getMaskFormat() const { return fMaskFormat; } |
@@ -31,20 +29,34 @@ public: |
bool addSubImage(int width, int height, const void*, GrIPoint16*); |
static void FreeLList(GrAtlas* atlas) { |
- while (atlas) { |
+ while (NULL != atlas) { |
GrAtlas* next = atlas->fNext; |
delete atlas; |
atlas = next; |
} |
} |
- // testing |
- GrAtlas* nextAtlas() const { return fNext; } |
+ static void MarkAllUnused(GrAtlas* atlas) { |
+ while (NULL != atlas) { |
+ atlas->fUsed = false; |
+ atlas = atlas->fNext; |
+ } |
+ } |
+ |
+ static bool RemoveUnusedAtlases(GrAtlasMgr* atlasMgr, GrAtlas** startAtlas); |
+ |
+ bool used() const { return fUsed; } |
+ void setUsed(bool used) { fUsed = used; } |
private: |
+ GrAtlas(GrAtlasMgr*, int plotX, int plotY, GrMaskFormat format); |
~GrAtlas(); // does not try to delete the fNext field |
GrAtlas* fNext; |
+ |
+ // for recycling |
+ bool fUsed; |
+ |
GrTexture* fTexture; |
GrRectanizer* fRects; |
GrAtlasMgr* fAtlasMgr; |
@@ -61,8 +73,9 @@ public: |
GrAtlasMgr(GrGpu*); |
~GrAtlasMgr(); |
- GrAtlas* addToAtlas(GrAtlas*, int width, int height, const void*, |
+ GrAtlas* addToAtlas(GrAtlas**, int width, int height, const void*, |
GrMaskFormat, GrIPoint16*); |
+ void deleteAtlas(GrAtlas* atlas) { delete atlas; } |
GrTexture* getTexture(GrMaskFormat format) const { |
GrAssert((unsigned)format < kCount_GrMaskFormats); |
@@ -70,7 +83,7 @@ public: |
} |
// to be called by ~GrAtlas() |
- void freePlot(int x, int y); |
+ void freePlot(GrMaskFormat format, int x, int y); |
private: |
GrGpu* fGpu; |