Reland of 8525 with fix for case when GrRT outlives GrTexture.
Review URL: https://codereview.chromium.org/13814015
git-svn-id: http://skia.googlecode.com/svn/trunk@8573 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/gpu/GrRenderTarget.h b/include/gpu/GrRenderTarget.h
index fcb4c3d..2755bec 100644
--- a/include/gpu/GrRenderTarget.h
+++ b/include/gpu/GrRenderTarget.h
@@ -148,22 +148,18 @@
fResolveRect.setLargestInverted();
}
- friend class GrTexture;
- // When a texture unrefs an owned render target this func
- // removes the back pointer. This could be called from
- // texture's destructor but would have to be done in derived
- // classes. By the time of texture base destructor it has already
- // lost its pointer to the rt.
- void onTextureReleaseRenderTarget() {
- GrAssert(NULL != fTexture);
- fTexture = NULL;
- }
-
// override of GrResource
virtual void onAbandon() SK_OVERRIDE;
virtual void onRelease() SK_OVERRIDE;
private:
+ friend class GrTexture;
+ // called by ~GrTexture to remove the non-ref'ed back ptr.
+ void owningTextureDestroyed() {
+ GrAssert(NULL != fTexture);
+ fTexture = NULL;
+ }
+
GrStencilBuffer* fStencilBuffer;
GrTexture* fTexture; // not ref'ed