| Index: cc/playback/display_item_list.h
|
| diff --git a/cc/playback/display_item_list.h b/cc/playback/display_item_list.h
|
| index 710284e4c579c06173390638cf643dafada9c1ea..402e73f421f99678de974f9b5680d71c9afc2e44 100644
|
| --- a/cc/playback/display_item_list.h
|
| +++ b/cc/playback/display_item_list.h
|
| @@ -76,8 +76,8 @@ class CC_EXPORT DisplayItemList
|
| template <typename DisplayItemType, typename... Args>
|
| const DisplayItemType& CreateAndAppendItem(const gfx::Rect& visual_rect,
|
| Args&&... args) {
|
| - visual_rects_.push_back(visual_rect);
|
| - auto* item = &items_.AllocateAndConstruct<DisplayItemType>(
|
| + inputs_.visual_rects.push_back(visual_rect);
|
| + auto* item = &inputs_.items.AllocateAndConstruct<DisplayItemType>(
|
| std::forward<Args>(args)...);
|
| approximate_op_count_ += item->ApproximateOpCount();
|
| ProcessAppendedItem(item);
|
| @@ -89,7 +89,7 @@ class CC_EXPORT DisplayItemList
|
| void Finalize();
|
|
|
| void SetIsSuitableForGpuRasterization(bool is_suitable) {
|
| - is_suitable_for_gpu_rasterization_ = is_suitable;
|
| + inputs_.is_suitable_for_gpu_rasterization = is_suitable;
|
| }
|
| bool IsSuitableForGpuRasterization() const;
|
| int ApproximateOpCount() const;
|
| @@ -108,14 +108,16 @@ class CC_EXPORT DisplayItemList
|
| float raster_scale,
|
| std::vector<DrawImage>* images);
|
|
|
| - gfx::Rect VisualRectForTesting(int index) { return visual_rects_[index]; }
|
| + gfx::Rect VisualRectForTesting(int index) {
|
| + return inputs_.visual_rects[index];
|
| + }
|
|
|
| ContiguousContainer<DisplayItem>::const_iterator begin() const {
|
| - return items_.begin();
|
| + return inputs_.items.begin();
|
| }
|
|
|
| ContiguousContainer<DisplayItem>::const_iterator end() const {
|
| - return items_.end();
|
| + return inputs_.items.end();
|
| }
|
|
|
| private:
|
| @@ -126,21 +128,11 @@ class CC_EXPORT DisplayItemList
|
|
|
| void ProcessAppendedItem(const DisplayItem* item);
|
|
|
| - ContiguousContainer<DisplayItem> items_;
|
| - // The visual rects associated with each of the display items in the
|
| - // display item list. There is one rect per display item, and the
|
| - // position in |visual_rects_| matches the position of the item in
|
| - // |items_| . These rects are intentionally kept separate
|
| - // because they are not needed while walking the |items_| for raster.
|
| - std::vector<gfx::Rect> visual_rects_;
|
| sk_sp<SkPicture> picture_;
|
|
|
| std::unique_ptr<SkPictureRecorder> recorder_;
|
| - const DisplayItemListSettings settings_;
|
| - bool retain_individual_display_items_;
|
|
|
| - gfx::Rect layer_rect_;
|
| - bool is_suitable_for_gpu_rasterization_;
|
| + bool retain_individual_display_items_;
|
| int approximate_op_count_;
|
|
|
| // Memory usage due to the cached SkPicture.
|
| @@ -148,6 +140,25 @@ class CC_EXPORT DisplayItemList
|
|
|
| DiscardableImageMap image_map_;
|
|
|
| + struct Inputs {
|
| + Inputs(gfx::Rect layer_rect, const DisplayItemListSettings& settings);
|
| + ~Inputs();
|
| +
|
| + ContiguousContainer<DisplayItem> items;
|
| + // The visual rects associated with each of the display items in the
|
| + // display item list. There is one rect per display item, and the
|
| + // position in |visual_rects| matches the position of the item in
|
| + // |items| . These rects are intentionally kept separate
|
| + // because they are not needed while walking the |items| for raster.
|
| + std::vector<gfx::Rect> visual_rects;
|
| +
|
| + const DisplayItemListSettings settings;
|
| + gfx::Rect layer_rect;
|
| + bool is_suitable_for_gpu_rasterization;
|
| + };
|
| +
|
| + Inputs inputs_;
|
| +
|
| friend class base::RefCountedThreadSafe<DisplayItemList>;
|
| FRIEND_TEST_ALL_PREFIXES(DisplayItemListTest, ApproximateMemoryUsage);
|
| DISALLOW_COPY_AND_ASSIGN(DisplayItemList);
|
|
|