Split cleanup changes out of bigger CL (take 2)

This are split out of: https://skia-review.googlesource.com/c/11581/ (Split up opLists)

This is a reland of: https://skia-review.googlesource.com/c/13585/ (Split cleanup changes out of bigger CL)

TBR=bsalomon@google.com

Change-Id: Id0d5c764953230412e78ae6aa654f8dfae998c60
Reviewed-on: https://skia-review.googlesource.com/13643
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrRenderTargetOpList.h b/src/gpu/GrRenderTargetOpList.h
index 5762e0a..dd265ed 100644
--- a/src/gpu/GrRenderTargetOpList.h
+++ b/src/gpu/GrRenderTargetOpList.h
@@ -45,12 +45,18 @@
     ~GrRenderTargetOpList() override;
 
     void makeClosed() override {
-        INHERITED::makeClosed();
+        if (this->isClosed()) {
+            return;
+        }
 
         fLastFullClearOp = nullptr;
         this->forwardCombine();
+
+        INHERITED::makeClosed();
     }
 
+    bool isEmpty() const { return fRecordedOps.empty(); }
+
     /**
      * Empties the draw buffer of any queued up draws.
      */