Loading libs/hwui/ClipArea.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -361,17 +361,21 @@ const ClipBase* ClipArea::serializeClip(LinearAllocator& allocator) { "expect RectangleList to be trivially destructible"); if (mLastSerialization == nullptr) { ClipBase* serialization; switch (mMode) { case ClipMode::Rectangle: mLastSerialization = allocator.create<ClipRect>(mClipRect); serialization = allocator.create<ClipRect>(mClipRect); break; case ClipMode::RectangleList: mLastSerialization = allocator.create<ClipRectList>(mRectangleList); serialization = allocator.create<ClipRectList>(mRectangleList); serialization->rect = mRectangleList.calculateBounds(); break; case ClipMode::Region: mLastSerialization = allocator.create<ClipRegion>(mClipRegion); serialization = allocator.create<ClipRegion>(mClipRegion); serialization->rect.set(mClipRegion.getBounds()); break; } mLastSerialization = serialization; } return mLastSerialization; } Loading libs/hwui/tests/unit/ClipAreaTests.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ TEST(ClipArea, serializeClip) { ASSERT_NE(nullptr, serializedClip); ASSERT_EQ(ClipMode::Rectangle, serializedClip->mode); auto clipRect = reinterpret_cast<const ClipRect*>(serializedClip); ASSERT_EQ(Rect(200, 200), clipRect->rect); EXPECT_EQ(Rect(200, 200), clipRect->rect); EXPECT_EQ(serializedClip, area.serializeClip(allocator)) << "Requery of clip on unmodified ClipArea must return same pointer."; } Loading @@ -147,7 +147,10 @@ TEST(ClipArea, serializeClip) { ASSERT_NE(nullptr, serializedClip); ASSERT_EQ(ClipMode::RectangleList, serializedClip->mode); auto clipRectList = reinterpret_cast<const ClipRectList*>(serializedClip); ASSERT_EQ(2, clipRectList->rectList.getTransformedRectanglesCount()); EXPECT_EQ(2, clipRectList->rectList.getTransformedRectanglesCount()); EXPECT_FALSE(clipRectList->rect.isEmpty()); EXPECT_FLOAT_EQ(199.87817f, clipRectList->rect.right) << "Right side should be clipped by rotated rect"; EXPECT_EQ(serializedClip, area.serializeClip(allocator)) << "Requery of clip on unmodified ClipArea must return same pointer."; } Loading @@ -161,8 +164,9 @@ TEST(ClipArea, serializeClip) { ASSERT_NE(nullptr, serializedClip); ASSERT_EQ(ClipMode::Region, serializedClip->mode); auto clipRegion = reinterpret_cast<const ClipRegion*>(serializedClip); ASSERT_EQ(SkIRect::MakeWH(200, 200), clipRegion->region.getBounds()) EXPECT_EQ(SkIRect::MakeWH(200, 200), clipRegion->region.getBounds()) << "Clip region should be 200x200"; EXPECT_EQ(Rect(200, 200), clipRegion->rect); EXPECT_EQ(serializedClip, area.serializeClip(allocator)) << "Requery of clip on unmodified ClipArea must return same pointer."; } Loading Loading
libs/hwui/ClipArea.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -361,17 +361,21 @@ const ClipBase* ClipArea::serializeClip(LinearAllocator& allocator) { "expect RectangleList to be trivially destructible"); if (mLastSerialization == nullptr) { ClipBase* serialization; switch (mMode) { case ClipMode::Rectangle: mLastSerialization = allocator.create<ClipRect>(mClipRect); serialization = allocator.create<ClipRect>(mClipRect); break; case ClipMode::RectangleList: mLastSerialization = allocator.create<ClipRectList>(mRectangleList); serialization = allocator.create<ClipRectList>(mRectangleList); serialization->rect = mRectangleList.calculateBounds(); break; case ClipMode::Region: mLastSerialization = allocator.create<ClipRegion>(mClipRegion); serialization = allocator.create<ClipRegion>(mClipRegion); serialization->rect.set(mClipRegion.getBounds()); break; } mLastSerialization = serialization; } return mLastSerialization; } Loading
libs/hwui/tests/unit/ClipAreaTests.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ TEST(ClipArea, serializeClip) { ASSERT_NE(nullptr, serializedClip); ASSERT_EQ(ClipMode::Rectangle, serializedClip->mode); auto clipRect = reinterpret_cast<const ClipRect*>(serializedClip); ASSERT_EQ(Rect(200, 200), clipRect->rect); EXPECT_EQ(Rect(200, 200), clipRect->rect); EXPECT_EQ(serializedClip, area.serializeClip(allocator)) << "Requery of clip on unmodified ClipArea must return same pointer."; } Loading @@ -147,7 +147,10 @@ TEST(ClipArea, serializeClip) { ASSERT_NE(nullptr, serializedClip); ASSERT_EQ(ClipMode::RectangleList, serializedClip->mode); auto clipRectList = reinterpret_cast<const ClipRectList*>(serializedClip); ASSERT_EQ(2, clipRectList->rectList.getTransformedRectanglesCount()); EXPECT_EQ(2, clipRectList->rectList.getTransformedRectanglesCount()); EXPECT_FALSE(clipRectList->rect.isEmpty()); EXPECT_FLOAT_EQ(199.87817f, clipRectList->rect.right) << "Right side should be clipped by rotated rect"; EXPECT_EQ(serializedClip, area.serializeClip(allocator)) << "Requery of clip on unmodified ClipArea must return same pointer."; } Loading @@ -161,8 +164,9 @@ TEST(ClipArea, serializeClip) { ASSERT_NE(nullptr, serializedClip); ASSERT_EQ(ClipMode::Region, serializedClip->mode); auto clipRegion = reinterpret_cast<const ClipRegion*>(serializedClip); ASSERT_EQ(SkIRect::MakeWH(200, 200), clipRegion->region.getBounds()) EXPECT_EQ(SkIRect::MakeWH(200, 200), clipRegion->region.getBounds()) << "Clip region should be 200x200"; EXPECT_EQ(Rect(200, 200), clipRegion->rect); EXPECT_EQ(serializedClip, area.serializeClip(allocator)) << "Requery of clip on unmodified ClipArea must return same pointer."; } Loading