Index: src/gpu/GrDrawState.h |
diff --git a/src/gpu/GrDrawState.h b/src/gpu/GrDrawState.h |
index 4869658b4f3c2f3929832d5ea293cd6a5aafd1d5..6a1e38056bbcad8da3a29498cf3b5f1d0f0ac85b 100644 |
--- a/src/gpu/GrDrawState.h |
+++ b/src/gpu/GrDrawState.h |
@@ -9,11 +9,10 @@ |
#define GrDrawState_DEFINED |
#include "GrBlend.h" |
+#include "GrOptDrawState.h" |
#include "GrProgramResource.h" |
#include "GrRODrawState.h" |
#include "effects/GrSimpleTextureEffect.h" |
- |
-class GrOptDrawState; |
/** |
* Modifiable subclass derived from GrRODrawState. The majority of the data that represents a draw |
@@ -48,7 +47,10 @@ |
**/ |
GrDrawState(const GrDrawState& state, const SkMatrix& preConcatMatrix); |
- virtual ~GrDrawState(); |
+ virtual ~GrDrawState() { |
+ SkSafeUnref(fCachedOptState); |
+ SkASSERT(0 == fBlockEffectRemovalCnt); |
+ } |
/** |
* Resets to the default state. GrEffects will be removed from all stages. |
@@ -550,9 +552,16 @@ |
GrOptDrawState* createOptState() const; |
private: |
- void invalidateOptState() const; |
+ void invalidateOptState() const { |
+ SkSafeSetNull(fCachedOptState); |
+ fBlendOptFlags = kInvalid_BlendOptFlag; |
+ } |
void onReset(const SkMatrix* initialViewMatrix); |
+ |
+ void invalidateBlendOptFlags() { |
+ fBlendOptFlags = kInvalid_BlendOptFlag; |
+ } |
// Some of the auto restore objects assume that no effects are removed during their lifetime. |
// This is used to assert that this condition holds. |