From 47aa8d1477d1bacdb3b45e0463ef99dcf5c9cc09 Mon Sep 17 00:00:00 2001 From: John Reck Date: Mon, 23 Jan 2017 11:20:37 -0800 Subject: Add tests for b/34598346 Test: unit test passes Bug: 34598346 Change-Id: I7e5144aa875e42487718059cc06b86e32db28702 --- libs/hwui/tests/unit/FrameBuilderTests.cpp | 31 ++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) (limited to 'libs') diff --git a/libs/hwui/tests/unit/FrameBuilderTests.cpp b/libs/hwui/tests/unit/FrameBuilderTests.cpp index 6f3ed9cf9e2f..5a2791cdfd82 100644 --- a/libs/hwui/tests/unit/FrameBuilderTests.cpp +++ b/libs/hwui/tests/unit/FrameBuilderTests.cpp @@ -311,13 +311,32 @@ RENDERTHREAD_OPENGL_PIPELINE_TEST(FrameBuilder, deferRenderNodeScene) { TestUtils::syncHierarchyPropertiesAndDisplayList(node); } - FrameBuilder frameBuilder(SkRect::MakeWH(800, 600), 800, 600, - sLightGeometry, Caches::getInstance()); - frameBuilder.deferRenderNodeScene(nodes, contentDrawBounds); + { + FrameBuilder frameBuilder(SkRect::MakeWH(800, 600), 800, 600, + sLightGeometry, Caches::getInstance()); + frameBuilder.deferRenderNodeScene(nodes, contentDrawBounds); - DeferRenderNodeSceneTestRenderer renderer; - frameBuilder.replayBakedOps(renderer); - EXPECT_EQ(4, renderer.getIndex()); + DeferRenderNodeSceneTestRenderer renderer; + frameBuilder.replayBakedOps(renderer); + EXPECT_EQ(4, renderer.getIndex()); + } + + for (auto& node : nodes) { + EXPECT_FALSE(node->nothingToDraw()); + node->setStagingDisplayList(nullptr, nullptr); + node->destroyHardwareResources(nullptr); + EXPECT_TRUE(node->nothingToDraw()); + } + + { + // Validate no crashes if any nodes are missing DisplayLists + FrameBuilder frameBuilder(SkRect::MakeWH(800, 600), 800, 600, + sLightGeometry, Caches::getInstance()); + frameBuilder.deferRenderNodeScene(nodes, contentDrawBounds); + + FailRenderer renderer; + frameBuilder.replayBakedOps(renderer); + } } RENDERTHREAD_OPENGL_PIPELINE_TEST(FrameBuilder, empty_noFbo0) { -- cgit v1.2.3-59-g8ed1b