Index: include/gpu/GrTexture.h |
=================================================================== |
--- include/gpu/GrTexture.h (revision 8570) |
+++ include/gpu/GrTexture.h (working copy) |
@@ -11,8 +11,8 @@ |
#include "GrSurface.h" |
#include "SkPoint.h" |
+#include "GrRenderTarget.h" |
-class GrRenderTarget; |
class GrResourceKey; |
class GrTextureParams; |
@@ -80,10 +80,10 @@ |
* render target |
*/ |
virtual GrRenderTarget* asRenderTarget() SK_OVERRIDE { |
- return fRenderTarget; |
+ return fRenderTarget.get(); |
} |
virtual const GrRenderTarget* asRenderTarget() const SK_OVERRIDE { |
- return fRenderTarget; |
+ return fRenderTarget.get(); |
} |
// GrTexture |
@@ -101,13 +101,6 @@ |
} |
/** |
- * Removes the reference on the associated GrRenderTarget held by this |
- * texture. Afterwards asRenderTarget() will return NULL. The |
- * GrRenderTarget survives the release if another ref is held on it. |
- */ |
- void releaseRenderTarget(); |
- |
- /** |
* Return the native ID or handle to the texture, depending on the |
* platform. e.g. on OpenGL, return the texture ID. |
*/ |
@@ -137,9 +130,9 @@ |
static bool NeedsFiltering(const GrResourceKey& key); |
protected: |
- GrRenderTarget* fRenderTarget; // texture refs its rt representation |
- // base class cons sets to NULL |
- // subclass cons can create and set |
+ // A texture refs its rt representation but not vice-versa. It is up to |
+ // the subclass constructor to initialize this pointer. |
+ SkAutoTUnref<GrRenderTarget> fRenderTarget; |
GrTexture(GrGpu* gpu, bool isWrapped, const GrTextureDesc& desc) |
: INHERITED(gpu, isWrapped, desc) |
@@ -149,6 +142,7 @@ |
fShiftFixedX = 31 - SkCLZ(fDesc.fWidth); |
fShiftFixedY = 31 - SkCLZ(fDesc.fHeight); |
} |
+ virtual ~GrTexture(); |
// GrResource overrides |
virtual void onRelease() SK_OVERRIDE; |