Convert DisplayList to a value-type wrapper

Make DisplayList its own type instead of an alias,
pushing the Skia aspect behind it mostly. Removes a bunch
of manual memory management and opens the door to DisplayList
being a union type with multiple implementations

Test: builds (somehow), boots, hwuiunit passes, CtsUiRendering passes
Change-Id: I1d7806aa3afc5d9ece08b06959920078a5814c59
diff --git a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp
index d393c69..ade1ddd 100644
--- a/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp
+++ b/libs/hwui/tests/microbench/DisplayListCanvasBench.cpp
@@ -45,19 +45,19 @@
 
 void BM_DisplayListCanvas_record_empty(benchmark::State& benchState) {
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     while (benchState.KeepRunning()) {
         canvas->resetRecording(100, 100);
         benchmark::DoNotOptimize(canvas.get());
-        delete canvas->finishRecording();
+        static_cast<void>(canvas->finishRecording());
     }
 }
 BENCHMARK(BM_DisplayListCanvas_record_empty);
 
 void BM_DisplayListCanvas_record_saverestore(benchmark::State& benchState) {
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     while (benchState.KeepRunning()) {
         canvas->resetRecording(100, 100);
@@ -66,20 +66,20 @@
         benchmark::DoNotOptimize(canvas.get());
         canvas->restore();
         canvas->restore();
-        delete canvas->finishRecording();
+        static_cast<void>(canvas->finishRecording());
     }
 }
 BENCHMARK(BM_DisplayListCanvas_record_saverestore);
 
 void BM_DisplayListCanvas_record_translate(benchmark::State& benchState) {
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     while (benchState.KeepRunning()) {
         canvas->resetRecording(100, 100);
         canvas->scale(10, 10);
         benchmark::DoNotOptimize(canvas.get());
-        delete canvas->finishRecording();
+        static_cast<void>(canvas->finishRecording());
     }
 }
 BENCHMARK(BM_DisplayListCanvas_record_translate);
@@ -92,7 +92,7 @@
  */
 void BM_DisplayListCanvas_record_simpleBitmapView(benchmark::State& benchState) {
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     Paint rectPaint;
     sk_sp<Bitmap> iconBitmap(TestUtils::createBitmap(80, 80));
@@ -111,7 +111,7 @@
             canvas->restore();
         }
         benchmark::DoNotOptimize(canvas.get());
-        delete canvas->finishRecording();
+        static_cast<void>(canvas->finishRecording());
     }
 }
 BENCHMARK(BM_DisplayListCanvas_record_simpleBitmapView);
@@ -122,7 +122,7 @@
     });
 
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     while (benchState.KeepRunning()) {
         canvas->resetRecording(200, 200);
@@ -143,7 +143,7 @@
         canvas->enableZ(false);
         canvas->restoreToCount(clipRestoreCount);
 
-        delete canvas->finishRecording();
+        static_cast<void>(canvas->finishRecording());
     }
 }
 BENCHMARK(BM_DisplayListCanvas_basicViewGroupDraw)->Arg(1)->Arg(5)->Arg(10);
diff --git a/libs/hwui/tests/microbench/RenderNodeBench.cpp b/libs/hwui/tests/microbench/RenderNodeBench.cpp
index 618988f..dd3f737 100644
--- a/libs/hwui/tests/microbench/RenderNodeBench.cpp
+++ b/libs/hwui/tests/microbench/RenderNodeBench.cpp
@@ -35,7 +35,7 @@
 void BM_RenderNode_recordSimple(benchmark::State& state) {
     sp<RenderNode> node = new RenderNode();
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     while (state.KeepRunning()) {
         canvas->resetRecording(100, 100, node.get());
@@ -48,12 +48,12 @@
 void BM_RenderNode_recordSimpleWithReuse(benchmark::State& state) {
     sp<RenderNode> node = new RenderNode();
     std::unique_ptr<Canvas> canvas(Canvas::create_recording_canvas(100, 100));
-    delete canvas->finishRecording();
+    static_cast<void>(canvas->finishRecording());
 
     while (state.KeepRunning()) {
         canvas->resetRecording(100, 100, node.get());
         canvas->drawColor(0x00000000, SkBlendMode::kSrcOver);
-        canvas->finishRecording()->reuseDisplayList(node.get());
+        canvas->finishRecording().clear(node.get());
     }
 }
 BENCHMARK(BM_RenderNode_recordSimpleWithReuse);
\ No newline at end of file