Index: include/core/SkPathRef.h |
diff --git a/include/core/SkPathRef.h b/include/core/SkPathRef.h |
index e7cc31cff43ef6d2947c822626a0709a034c6077..c09f6e87e471c1d8320a11156ef9dc64d0dbb92a 100644 |
--- a/include/core/SkPathRef.h |
+++ b/include/core/SkPathRef.h |
@@ -180,19 +180,7 @@ public: |
*/ |
static void Rewind(SkAutoTUnref<SkPathRef>* pathRef); |
- virtual ~SkPathRef() { |
- SkDEBUGCODE(this->validate();) |
- sk_free(fPoints); |
- |
- SkDEBUGCODE(fPoints = NULL;) |
- SkDEBUGCODE(fVerbs = NULL;) |
- SkDEBUGCODE(fVerbCnt = 0x9999999;) |
- SkDEBUGCODE(fPointCnt = 0xAAAAAAA;) |
- SkDEBUGCODE(fPointCnt = 0xBBBBBBB;) |
- SkDEBUGCODE(fGenerationID = 0xEEEEEEEE;) |
- SkDEBUGCODE(fEditorsAttached = 0x7777777;) |
- } |
- |
+ virtual ~SkPathRef(); |
int countPoints() const { SkDEBUGCODE(this->validate();) return fPointCnt; } |
int countVerbs() const { SkDEBUGCODE(this->validate();) return fVerbCnt; } |
int countWeights() const { SkDEBUGCODE(this->validate();) return fConicWeights.count(); } |
@@ -251,6 +239,13 @@ public: |
*/ |
uint32_t genID() const; |
+ struct GenIDChangeListener { |
+ virtual ~GenIDChangeListener() {} |
+ virtual void onChange() = 0; |
+ }; |
+ |
+ void addGenIDChangeListener(GenIDChangeListener* listener); |
+ |
SkDEBUGCODE(void validate() const;) |
private: |
@@ -422,6 +417,8 @@ private: |
return fPoints; |
} |
+ void callGenIDChangeListeners(); |
+ |
enum { |
kMinSize = 256, |
}; |
@@ -446,6 +443,8 @@ private: |
mutable uint32_t fGenerationID; |
SkDEBUGCODE(int32_t fEditorsAttached;) // assert that only one editor in use at any time. |
+ SkTDArray<GenIDChangeListener*> fGenIDChangeListeners; // pointers are owned |
+ |
friend class PathRefTest_Private; |
typedef SkRefCnt INHERITED; |
}; |