summaryrefslogtreecommitdiffstats
path: root/cc/blink/web_display_item_list_impl.cc
diff options
context:
space:
mode:
authorenne <enne@chromium.org>2015-12-10 11:50:18 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-10 19:51:19 +0000
commit3b006fb5a67c9e9bc0adf3f68d72a10afa221198 (patch)
tree998b86d0c377488598212cb1dc818656eaa77c20 /cc/blink/web_display_item_list_impl.cc
parent2238dfbf0f1ae3bac2004ea2303c0d9417ae51a3 (diff)
downloadchromium_src-3b006fb5a67c9e9bc0adf3f68d72a10afa221198.zip
chromium_src-3b006fb5a67c9e9bc0adf3f68d72a10afa221198.tar.gz
chromium_src-3b006fb5a67c9e9bc0adf3f68d72a10afa221198.tar.bz2
cc: Shrink size of display item
This removes all of the base class members from display item and instead calculates them during allocation. This is done by processing each item as it is added, which requires passing in all the ctor args to CreateAndAppendItem. This reduces the size of all display items by 16 bytes so that the largest is now "only" 80 bytes and the smallest is 8. Also, DisplayItemList had a bug where it would allocate an item, (maybe) process all added items, and then SetNew on that last item. In that case, the processing would skip the final item because it was just a newly allocated item. This patch fixes that by the above changes to CreateAndAppendItem. R=vmpstr@chromium.org,chrishtr@chromium.org CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1494223003 Cr-Commit-Position: refs/heads/master@{#364437}
Diffstat (limited to 'cc/blink/web_display_item_list_impl.cc')
-rw-r--r--cc/blink/web_display_item_list_impl.cc67
1 files changed, 25 insertions, 42 deletions
diff --git a/cc/blink/web_display_item_list_impl.cc b/cc/blink/web_display_item_list_impl.cc
index b030e93..9859d1c 100644
--- a/cc/blink/web_display_item_list_impl.cc
+++ b/cc/blink/web_display_item_list_impl.cc
@@ -50,13 +50,11 @@ void WebDisplayItemListImpl::appendDrawingItem(
const blink::WebRect& visual_rect,
const SkPicture* picture) {
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item =
- display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>(
- visual_rect);
- item->SetNew(skia::SharePtr(const_cast<SkPicture*>(picture)));
+ display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>(
+ visual_rect, skia::SharePtr(const_cast<SkPicture*>(picture)));
} else {
- cc::DrawingDisplayItem item;
- item.SetNew(skia::SharePtr(const_cast<SkPicture*>(picture)));
+ cc::DrawingDisplayItem item(
+ skia::SharePtr(const_cast<SkPicture*>(picture)));
display_item_list_->RasterIntoCanvas(item);
}
}
@@ -70,12 +68,10 @@ void WebDisplayItemListImpl::appendClipItem(
rounded_rects.push_back(rounded_clip_rects[i]);
}
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item = display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>(
- visual_rect);
- item->SetNew(clip_rect, rounded_rects);
+ display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>(
+ visual_rect, clip_rect, rounded_rects);
} else {
- cc::ClipDisplayItem item;
- item.SetNew(clip_rect, rounded_rects);
+ cc::ClipDisplayItem item(clip_rect, rounded_rects);
display_item_list_->RasterIntoCanvas(item);
}
}
@@ -96,13 +92,10 @@ void WebDisplayItemListImpl::appendClipPathItem(
SkRegion::Op clip_op,
bool antialias) {
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item =
- display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(
- visual_rect);
- item->SetNew(clip_path, clip_op, antialias);
+ display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>(
+ visual_rect, clip_path, clip_op, antialias);
} else {
- cc::ClipPathDisplayItem item;
- item.SetNew(clip_path, clip_op, antialias);
+ cc::ClipPathDisplayItem item(clip_path, clip_op, antialias);
display_item_list_->RasterIntoCanvas(item);
}
}
@@ -121,13 +114,10 @@ void WebDisplayItemListImpl::appendFloatClipItem(
const blink::WebRect& visual_rect,
const blink::WebFloatRect& clip_rect) {
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item =
- display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>(
- visual_rect);
- item->SetNew(clip_rect);
+ display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>(
+ visual_rect, clip_rect);
} else {
- cc::FloatClipDisplayItem item;
- item.SetNew(clip_rect);
+ cc::FloatClipDisplayItem item(clip_rect);
display_item_list_->RasterIntoCanvas(item);
}
}
@@ -149,13 +139,10 @@ void WebDisplayItemListImpl::appendTransformItem(
transform.matrix() = matrix;
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item =
- display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>(
- visual_rect);
- item->SetNew(transform);
+ display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>(
+ visual_rect, transform);
} else {
- cc::TransformDisplayItem item;
- item.SetNew(transform);
+ cc::TransformDisplayItem item(transform);
display_item_list_->RasterIntoCanvas(item);
}
}
@@ -182,15 +169,13 @@ void WebDisplayItemListImpl::appendCompositingItem(
// value, but that breaks slimming paint reftests.
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item =
- display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>(
- visual_rect);
- item->SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
- xfermode, bounds, skia::SharePtr(color_filter));
+ display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>(
+ visual_rect, static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
+ xfermode, bounds, skia::SharePtr(color_filter));
} else {
- cc::CompositingDisplayItem item;
- item.SetNew(static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)),
- xfermode, bounds, skia::SharePtr(color_filter));
+ cc::CompositingDisplayItem item(
+ static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), xfermode,
+ bounds, skia::SharePtr(color_filter));
display_item_list_->RasterIntoCanvas(item);
}
}
@@ -213,12 +198,10 @@ void WebDisplayItemListImpl::appendFilterItem(
static_cast<const WebFilterOperationsImpl&>(filters);
if (display_item_list_->RetainsIndividualDisplayItems()) {
- auto* item = display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>(
- visual_rect);
- item->SetNew(filters_impl.AsFilterOperations(), bounds);
+ display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>(
+ visual_rect, filters_impl.AsFilterOperations(), bounds);
} else {
- cc::FilterDisplayItem item;
- item.SetNew(filters_impl.AsFilterOperations(), bounds);
+ cc::FilterDisplayItem item(filters_impl.AsFilterOperations(), bounds);
display_item_list_->RasterIntoCanvas(item);
}
}