Fix DDL unit tests

Change-Id: I2c3da5f0390b6222a4ffefe8b50a20c3aee98da6
Reviewed-on: https://skia-review.googlesource.com/102620
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index 3bcff11..1897860 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -324,6 +324,11 @@
 
 void GrDrawingManager::moveOpListsToDDL(SkDeferredDisplayList* ddl) {
 #ifndef SK_RASTER_RECORDER_IMPLEMENTATION
+    for (int i = 0; i < fOpLists.count(); ++i) {
+        // no opList should receive a new command after this
+        fOpLists[i]->makeClosed(*fContext->caps());
+    }
+
     ddl->fOpLists = std::move(fOpLists);
 #endif
 }
diff --git a/tests/DeferredDisplayListTest.cpp b/tests/DeferredDisplayListTest.cpp
index 8ee24be..2c507f1 100644
--- a/tests/DeferredDisplayListTest.cpp
+++ b/tests/DeferredDisplayListTest.cpp
@@ -288,10 +288,9 @@
             if (DDLStage::kDetach == lastStage) {
                 REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
                 recorder.reset();
-                // DDL TODO: Once copies of OpLists from the recorder to DDL are implemented we can
-                // uncomment this check. Currently the texture is getting reset when the recorder
-                // goes away (assuming we did an earlyImageReset).
-                // REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
+#ifndef SK_RASTER_RECORDER_IMPLEMENTATION
+                REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
+#endif
                 ddl.reset();
                 if (earlyImageReset) {
                     REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount);
@@ -308,19 +307,20 @@
 
             REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
             recorder.reset();
-            // DDL TODO: Once copies of OpLists from the recorder to DDL are implemented we can
-            // uncomment these checks. Currently the texture is getting released when the recorder
-            // goes away (assuming we did an earlyImageReset).
-            // REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
+#ifndef SK_RASTER_RECORDER_IMPLEMENTATION
+            REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
+#endif
             ddl.reset();
-            // REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
+#ifndef SK_RASTER_RECORDER_IMPLEMENTATION
+            REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount);
+#endif
 
             // Force all draws to flush and sync by calling a read pixels
             SkImageInfo imageInfo = SkImageInfo::Make(kSize, kSize, kRGBA_8888_SkColorType,
                                                       kPremul_SkAlphaType);
             SkBitmap bitmap;
             bitmap.allocPixels(imageInfo);
-            s->readPixels(imageInfo, bitmap.getPixels(), 0, 0, 0);
+            s->readPixels(imageInfo, bitmap.getPixels(), bitmap.rowBytes(), 0, 0);
 
             if (earlyImageReset) {
                 REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount);