diff options
Diffstat (limited to 'src/gpu')
-rwxr-xr-x | src/gpu/GrContext.cpp | 13 | ||||
-rw-r--r-- | src/gpu/GrResourceCache.cpp | 2 | ||||
-rw-r--r-- | src/gpu/GrTexture.cpp | 3 |
3 files changed, 5 insertions, 13 deletions
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp index 4e833a1f96..a815263d13 100755 --- a/src/gpu/GrContext.cpp +++ b/src/gpu/GrContext.cpp @@ -528,21 +528,14 @@ void GrContext::addExistingTextureToCache(GrTexture* texture) { // still be in the exclusive pile. Recycle it. fResourceCache->makeNonExclusive(texture->getCacheEntry()); this->purgeCache(); - } else if (texture->getDeferredRefCount() <= 0) { + } else { // When we aren't reusing textures we know this scratch texture // will never be reused and would be just wasting time in the cache fResourceCache->makeNonExclusive(texture->getCacheEntry()); fResourceCache->deleteResource(texture->getCacheEntry()); - } else { - // In this case (fDeferredRefCount > 0) but the cache is the only - // one holding a real ref. Mark the object so when the deferred - // ref count goes to 0 the texture will be deleted (remember - // in this code path scratch textures aren't getting reused). - texture->setNeedsDeferredUnref(); } } - void GrContext::unlockScratchTexture(GrTexture* texture) { ASSERT_OWNED_RESOURCE(texture); SkASSERT(NULL != texture->getCacheEntry()); @@ -554,14 +547,14 @@ void GrContext::unlockScratchTexture(GrTexture* texture) { if (fGpu->caps()->reuseScratchTextures() || NULL != texture->asRenderTarget()) { fResourceCache->makeNonExclusive(texture->getCacheEntry()); this->purgeCache(); - } else if (texture->unique() && texture->getDeferredRefCount() <= 0) { + } else if (texture->unique()) { // Only the cache now knows about this texture. Since we're never // reusing scratch textures (in this code path) it would just be // wasting time sitting in the cache. fResourceCache->makeNonExclusive(texture->getCacheEntry()); fResourceCache->deleteResource(texture->getCacheEntry()); } else { - // In this case (fRefCnt > 1 || defRefCnt > 0) but we don't really + // In this case (there is still a non-cache ref) but we don't really // want to readd it to the cache (since it will never be reused). // Instead, give up the cache's ref and leave the decision up to // addExistingTextureToCache once its ref count reaches 0. For diff --git a/src/gpu/GrResourceCache.cpp b/src/gpu/GrResourceCache.cpp index 529c3a5d1d..ac10ebc641 100644 --- a/src/gpu/GrResourceCache.cpp +++ b/src/gpu/GrResourceCache.cpp @@ -373,7 +373,7 @@ void GrResourceCache::purgeInvalidated() { } void GrResourceCache::deleteResource(GrResourceCacheEntry* entry) { - SkASSERT(1 == entry->fResource->getRefCnt()); + SkASSERT(entry->fResource->unique()); // remove from our cache fCache.remove(entry->key(), entry); diff --git a/src/gpu/GrTexture.cpp b/src/gpu/GrTexture.cpp index fb5a8d350e..63069a452b 100644 --- a/src/gpu/GrTexture.cpp +++ b/src/gpu/GrTexture.cpp @@ -29,7 +29,7 @@ void GrTexture::internal_dispose() const { if (this->impl()->isSetFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit) && NULL != this->INHERITED::getContext()) { GrTexture* nonConstThis = const_cast<GrTexture *>(this); - this->fRefCnt = 1; // restore ref count to initial setting + this->ref(); // restore ref count to initial setting nonConstThis->impl()->resetFlag((GrTextureFlags) GrTextureImpl::kReturnToCache_FlagBit); nonConstThis->INHERITED::getContext()->addExistingTextureToCache(nonConstThis); @@ -39,7 +39,6 @@ void GrTexture::internal_dispose() const { return; } - SkASSERT(0 == this->getDeferredRefCount()); this->INHERITED::internal_dispose(); } |