diff --git a/libs/hwui/tests/unit/SkiaPipelineTests.cpp b/libs/hwui/tests/unit/SkiaPipelineTests.cpp index 9e20498ce48e6..722faf6268cd7 100644 --- a/libs/hwui/tests/unit/SkiaPipelineTests.cpp +++ b/libs/hwui/tests/unit/SkiaPipelineTests.cpp @@ -201,12 +201,11 @@ namespace { template class DeferLayer : public SkSurface_Base { public: - DeferLayer(T *canvas) - : SkSurface_Base(canvas->imageInfo(), nullptr) - , mCanvas(canvas) { + DeferLayer() + : SkSurface_Base(T().imageInfo(), nullptr) { } SkCanvas* onNewCanvas() override { - return mCanvas; + return new T(); } sk_sp onNewSurface(const SkImageInfo&) override { return sk_sp(); @@ -214,8 +213,8 @@ public: sk_sp onNewImageSnapshot(SkBudgeted, SkCopyPixelsMode) override { return sk_sp(); } + T* canvas() { return static_cast(getCanvas()); } void onCopyOnWrite(ContentChangeMode) override {} - T* mCanvas; // bare pointer, not owned/ref'd }; } @@ -280,10 +279,9 @@ RENDERTHREAD_TEST(SkiaPipeline, deferRenderNodeScene) { LayerUpdateQueue layerUpdateQueue; SkRect dirty = SkRect::MakeWH(800, 600); auto pipeline = std::make_unique(renderThread); - DeferTestCanvas canvas; - sk_sp surface(new DeferLayer(&canvas)); + sk_sp> surface(new DeferLayer()); pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true, contentDrawBounds, surface); - EXPECT_EQ(4, canvas.mDrawCounter); + EXPECT_EQ(4, surface->canvas()->mDrawCounter); } RENDERTHREAD_TEST(SkiaPipeline, clipped) { @@ -311,11 +309,10 @@ RENDERTHREAD_TEST(SkiaPipeline, clipped) { LayerUpdateQueue layerUpdateQueue; SkRect dirty = SkRect::MakeLTRB(10, 20, 30, 40); auto pipeline = std::make_unique(renderThread); - ClippedTestCanvas canvas; - sk_sp surface(new DeferLayer(&canvas)); + sk_sp> surface(new DeferLayer()); pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true, SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface); - EXPECT_EQ(1, canvas.mDrawCounter); + EXPECT_EQ(1, surface->canvas()->mDrawCounter); } RENDERTHREAD_TEST(SkiaPipeline, clip_replace) { @@ -346,9 +343,8 @@ RENDERTHREAD_TEST(SkiaPipeline, clip_replace) { LayerUpdateQueue layerUpdateQueue; SkRect dirty = SkRect::MakeLTRB(10, 10, 40, 40); auto pipeline = std::make_unique(renderThread); - ClipReplaceTestCanvas canvas; - sk_sp surface(new DeferLayer(&canvas)); + sk_sp> surface(new DeferLayer()); pipeline->renderFrame(layerUpdateQueue, dirty, nodes, true, SkRect::MakeWH(CANVAS_WIDTH, CANVAS_HEIGHT), surface); - EXPECT_EQ(1, canvas.mDrawCounter); + EXPECT_EQ(1, surface->canvas()->mDrawCounter); }