Index: src/gpu/GrStencilAndCoverTextContext.cpp |
diff --git a/src/gpu/GrStencilAndCoverTextContext.cpp b/src/gpu/GrStencilAndCoverTextContext.cpp |
index 65c26423d1391edd69193620234af1e344e5303f..0867f2eb91f50c434226cd60b9cac4e9bdf3225a 100644 |
--- a/src/gpu/GrStencilAndCoverTextContext.cpp |
+++ b/src/gpu/GrStencilAndCoverTextContext.cpp |
@@ -18,7 +18,7 @@ |
#include "SkPath.h" |
#include "SkTextMapStateProc.h" |
-class GrStencilAndCoverTextContext::GlyphPathRange : public GrCacheable { |
+class GrStencilAndCoverTextContext::GlyphPathRange : public GrGpuObject { |
static const int kMaxGlyphCount = 1 << 16; // Glyph IDs are uint16_t's |
static const int kGlyphGroupSize = 16; // Glyphs get tracked in groups of 16 |
@@ -75,13 +75,13 @@ public: |
this->didChangeGpuMemorySize(); |
} |
- // GrCacheable overrides |
+ // GrGpuObject overrides |
virtual size_t gpuMemorySize() const SK_OVERRIDE { return fPathRange->gpuMemorySize(); } |
- virtual bool isValidOnGpu() const SK_OVERRIDE { return fPathRange->isValidOnGpu(); } |
private: |
GlyphPathRange(GrContext* context, const SkDescriptor& desc, const SkStrokeRec& stroke) |
- : fDesc(desc.copy()) |
+ : INHERITED(context->getGpu(), false) |
+ , fDesc(desc.copy()) |
// We reserve a range of kMaxGlyphCount paths because of fallbacks fonts. We |
// can't know exactly how many glyphs we might need without preloading every |
// fallback, which we don't want to do at this point. |
@@ -90,15 +90,28 @@ private: |
} |
~GlyphPathRange() { |
+ this->release(); |
SkDescriptor::Free(fDesc); |
} |
+ virtual void onRelease() SK_OVERRIDE { |
+ INHERITED::onRelease(); |
+ fPathRange.reset(NULL); |
+ } |
+ |
+ virtual void onAbandon() SK_OVERRIDE { |
+ INHERITED::onAbandon(); |
+ fPathRange->abandon(); |
+ fPathRange.reset(NULL); |
+ } |
+ |
+ |
static const int kMaxGroupCount = (kMaxGlyphCount + (kGlyphGroupSize - 1)) / kGlyphGroupSize; |
SkDescriptor* const fDesc; |
uint8_t fLoadedGlyphs[(kMaxGroupCount + 7) >> 3]; // One bit per glyph group |
SkAutoTUnref<GrPathRange> fPathRange; |
- typedef GrCacheable INHERITED; |
+ typedef GrGpuObject INHERITED; |
}; |