Add assert to catch circular drawing higher up the call stack.
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 30 Mar 2012 17:24:17 +0000 (17:24 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 30 Mar 2012 17:24:17 +0000 (17:24 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@3559 2bbb7eff-a529-9590-31e7-b0007b416f81

include/gpu/GrTexture.h
src/gpu/GrDrawTarget.cpp

index 8274140..8e39fb5 100644 (file)
@@ -94,6 +94,7 @@ public:
      *            render target
      */
     GrRenderTarget* asRenderTarget() { return fRenderTarget; }
+    const GrRenderTarget* asRenderTarget() const { return fRenderTarget; }
 
     /**
      * Removes the reference on the associated GrRenderTarget held by this
index 730450b..3e3ff51 100644 (file)
@@ -771,6 +771,14 @@ bool GrDrawTarget::checkDraw(GrPrimitiveType type, int startVertex,
             GrCrash("Index reads outside valid index range.");
         }
     }
+
+    GrAssert(NULL != this->getDrawState().getRenderTarget());
+    for (int i = 0; i < GrDrawState::kNumStages; ++i) {
+        if (this->getDrawState().getTexture(i)) {
+            GrAssert(this->getDrawState().getTexture(i)->asRenderTarget() != 
+                     this->getDrawState().getRenderTarget());
+        }
+    }
 #endif
     const GrDrawState& drawState = this->getDrawState();
     if (NULL == drawState.getRenderTarget()) {