| Index: include/gpu/GrGpuResource.h
|
| diff --git a/include/gpu/GrGpuResource.h b/include/gpu/GrGpuResource.h
|
| index 17f34d62b2609fc1b641694bdafb0df30c216ce2..61849e7232fd9f23df1219429d7355580a2606ef 100644
|
| --- a/include/gpu/GrGpuResource.h
|
| +++ b/include/gpu/GrGpuResource.h
|
| @@ -49,21 +49,27 @@
|
| // templated helper classes (e.g. SkAutoTUnref). However, we have different categories of
|
| // refs (e.g. pending reads). We also don't require thread safety as GrCacheable objects are
|
| // not intended to cross thread boundaries.
|
| + // internal_dispose() exists because of GrTexture's reliance on it. It will be removed
|
| + // soon.
|
| void ref() const {
|
| - this->validate();
|
| ++fRefCnt;
|
| + // pre-validate once internal_dispose is removed (and therefore 0 ref cnt is not allowed).
|
| + this->validate();
|
| }
|
|
|
| void unref() const {
|
| this->validate();
|
| --fRefCnt;
|
| if (0 == fRefCnt && 0 == fPendingReads && 0 == fPendingWrites) {
|
| - SkDELETE(this);
|
| + this->internal_dispose();
|
| }
|
| }
|
|
|
| - bool isPurgable() const { return this->reffedOnlyByCache() && !this->internalHasPendingIO(); }
|
| - bool reffedOnlyByCache() const { return 1 == fRefCnt; }
|
| + virtual void internal_dispose() const { SkDELETE(this); }
|
| +
|
| + /** This is exists to service the old mechanism for recycling scratch textures. It will
|
| + be removed soon. */
|
| + bool unique() const { return 1 == (fRefCnt + fPendingReads + fPendingWrites); }
|
|
|
| void validate() const {
|
| #ifdef SK_DEBUG
|
| @@ -74,8 +80,9 @@
|
| #endif
|
| }
|
|
|
| +
|
| protected:
|
| - GrIORef() : fRefCnt(1), fPendingReads(0), fPendingWrites(0), fIsScratch(kNo_IsScratch) { }
|
| + GrIORef() : fRefCnt(1), fPendingReads(0), fPendingWrites(0) {}
|
|
|
| bool internalHasPendingRead() const { return SkToBool(fPendingReads); }
|
| bool internalHasPendingWrite() const { return SkToBool(fPendingWrites); }
|
| @@ -91,7 +98,7 @@
|
| this->validate();
|
| --fPendingReads;
|
| if (0 == fRefCnt && 0 == fPendingReads && 0 == fPendingWrites) {
|
| - SkDELETE(this);
|
| + this->internal_dispose();
|
| }
|
| }
|
|
|
| @@ -104,7 +111,7 @@
|
| this->validate();
|
| --fPendingWrites;
|
| if (0 == fRefCnt && 0 == fPendingReads && 0 == fPendingWrites) {
|
| - SkDELETE(this);
|
| + this->internal_dispose();
|
| }
|
| }
|
|
|
| @@ -115,17 +122,6 @@
|
|
|
| // This class is used to manage conversion of refs to pending reads/writes.
|
| friend class GrGpuResourceRef;
|
| -
|
| - // This is temporary until GrResourceCache is fully replaced by GrResourceCache2.
|
| - enum IsScratch {
|
| - kNo_IsScratch,
|
| - kYes_IsScratch
|
| - } fIsScratch;
|
| -
|
| - friend class GrContext; // to set the above field.
|
| - friend class GrResourceCache; // to check the above field.
|
| - friend class GrResourceCache2; // to check the above field.
|
| -
|
| template <typename, IOType> friend class GrPendingIOResource;
|
| };
|
|
|
|
|