| Index: cc/playback/display_item_list.h
|
| diff --git a/cc/playback/display_item_list.h b/cc/playback/display_item_list.h
|
| index 4d245383f40944554310348344d11640c8853bc6..ad3db0195e5f2b7b4003c4817f7a023bdae804a6 100644
|
| --- a/cc/playback/display_item_list.h
|
| +++ b/cc/playback/display_item_list.h
|
| @@ -22,6 +22,8 @@ class SkCanvas;
|
| class SkPictureRecorder;
|
|
|
| namespace cc {
|
| +class DisplayItem;
|
| +class DrawingDisplayItem;
|
|
|
| namespace proto {
|
| class DisplayItemList;
|
| @@ -60,21 +62,19 @@ class CC_EXPORT DisplayItemList
|
| // is_suitable_for_gpu_rasterization_ and approximate_op_count_.
|
| void RasterIntoCanvas(const DisplayItem& display_item);
|
|
|
| - template <typename DisplayItemType>
|
| - DisplayItemType* CreateAndAppendItem(const gfx::Rect& visual_rect) {
|
| -#if DCHECK_IS_ON()
|
| - needs_process_ = true;
|
| -#endif
|
| + // Because processing happens in this function, all the set up for
|
| + // this item should be done via the args, which is why the return
|
| + // type needs to be const, to prevent set-after-processing mistakes.
|
| + template <typename DisplayItemType, typename... Args>
|
| + const DisplayItemType& CreateAndAppendItem(const gfx::Rect& visual_rect,
|
| + const Args&... args) {
|
| visual_rects_.push_back(visual_rect);
|
| - ProcessAppendedItemsOnTheFly();
|
| - return &items_.AllocateAndConstruct<DisplayItemType>();
|
| + // TODO(enne): This should forward the args.
|
| + auto* item = &items_.AllocateAndConstruct<DisplayItemType>(args...);
|
| + ProcessAppendedItem(item);
|
| + return *item;
|
| }
|
|
|
| - // Removes the last item. This cannot be called on lists with cached pictures
|
| - // (since the data may already have been incorporated into cached picture
|
| - // sizes, etc).
|
| - void RemoveLast();
|
| -
|
| // Called after all items are appended, to process the items and, if
|
| // applicable, create an internally cached SkPicture.
|
| void Finalize();
|
| @@ -104,16 +104,7 @@ class CC_EXPORT DisplayItemList
|
| bool retain_individual_display_items);
|
| ~DisplayItemList();
|
|
|
| - // While appending new items, if they are not being retained, this can process
|
| - // periodically to avoid retaining all the items and processing at the end.
|
| - void ProcessAppendedItemsOnTheFly();
|
| - void ProcessAppendedItems();
|
| -#if DCHECK_IS_ON()
|
| - bool ProcessAppendedItemsCalled() const { return !needs_process_; }
|
| - bool needs_process_;
|
| -#else
|
| - bool ProcessAppendedItemsCalled() const { return true; }
|
| -#endif
|
| + void ProcessAppendedItem(const DisplayItem* item);
|
|
|
| ContiguousContainer<DisplayItem> items_;
|
| // The visual rects associated with each of the display items in the
|
| @@ -136,9 +127,6 @@ class CC_EXPORT DisplayItemList
|
| // Memory usage due to the cached SkPicture.
|
| size_t picture_memory_usage_;
|
|
|
| - // Memory usage due to external data held by display items.
|
| - size_t external_memory_usage_;
|
| -
|
| DiscardableImageMap image_map_;
|
|
|
| friend class base::RefCountedThreadSafe<DisplayItemList>;
|
|
|