| Index: ui/compositor/clip_transform_recorder.cc
|
| diff --git a/ui/compositor/clip_transform_recorder.cc b/ui/compositor/clip_transform_recorder.cc
|
| index 6b8109d803a80a8fcff196948fc4286368fb765b..5e0107d914487759c08d826a7d789c60c1ddc56b 100644
|
| --- a/ui/compositor/clip_transform_recorder.cc
|
| +++ b/ui/compositor/clip_transform_recorder.cc
|
| @@ -23,15 +23,26 @@ ClipTransformRecorder::ClipTransformRecorder(const PaintContext& context)
|
| ClipTransformRecorder::~ClipTransformRecorder() {
|
| if (context_.canvas_)
|
| context_.canvas_->Restore();
|
| - for (auto it = closers_.rbegin(); it != closers_.rend(); ++it)
|
| - context_.list_->AppendItem(make_scoped_ptr(*it));
|
| + for (Closer c : closers_) {
|
| + switch (c) {
|
| + case CLIP_RECT:
|
| + context_.list_->CreateAndAppendItem<cc::EndClipDisplayItem>();
|
| + break;
|
| + case CLIP_PATH:
|
| + context_.list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>();
|
| + break;
|
| + case TRANSFORM:
|
| + context_.list_->CreateAndAppendItem<cc::EndTransformDisplayItem>();
|
| + break;
|
| + }
|
| + }
|
| }
|
|
|
| void ClipTransformRecorder::ClipRect(const gfx::Rect& clip_rect) {
|
| if (context_.list_) {
|
| - context_.list_->AppendItem(
|
| - cc::ClipDisplayItem::Create(clip_rect, std::vector<SkRRect>()));
|
| - closers_.push_back(cc::EndClipDisplayItem::Create().release());
|
| + auto* item = context_.list_->CreateAndAppendItem<cc::ClipDisplayItem>();
|
| + item->SetNew(clip_rect, std::vector<SkRRect>());
|
| + closers_.push_back(CLIP_RECT);
|
| } else {
|
| context_.canvas_->ClipRect(clip_rect);
|
| }
|
| @@ -40,9 +51,9 @@ void ClipTransformRecorder::ClipRect(const gfx::Rect& clip_rect) {
|
| void ClipTransformRecorder::ClipPath(const gfx::Path& clip_path) {
|
| bool anti_alias = false;
|
| if (context_.list_) {
|
| - context_.list_->AppendItem(cc::ClipPathDisplayItem::Create(
|
| - clip_path, SkRegion::kIntersect_Op, anti_alias));
|
| - closers_.push_back(cc::EndClipPathDisplayItem::Create().release());
|
| + auto* item = context_.list_->CreateAndAppendItem<cc::ClipPathDisplayItem>();
|
| + item->SetNew(clip_path, SkRegion::kIntersect_Op, anti_alias);
|
| + closers_.push_back(CLIP_PATH);
|
| } else {
|
| context_.canvas_->ClipPath(clip_path, anti_alias);
|
| }
|
| @@ -52,9 +63,9 @@ void ClipTransformRecorder::ClipPathWithAntiAliasing(
|
| const gfx::Path& clip_path) {
|
| bool anti_alias = true;
|
| if (context_.list_) {
|
| - context_.list_->AppendItem(cc::ClipPathDisplayItem::Create(
|
| - clip_path, SkRegion::kIntersect_Op, anti_alias));
|
| - closers_.push_back(cc::EndClipPathDisplayItem::Create().release());
|
| + auto* item = context_.list_->CreateAndAppendItem<cc::ClipPathDisplayItem>();
|
| + item->SetNew(clip_path, SkRegion::kIntersect_Op, anti_alias);
|
| + closers_.push_back(CLIP_PATH);
|
| } else {
|
| context_.canvas_->ClipPath(clip_path, anti_alias);
|
| }
|
| @@ -62,8 +73,10 @@ void ClipTransformRecorder::ClipPathWithAntiAliasing(
|
|
|
| void ClipTransformRecorder::Transform(const gfx::Transform& transform) {
|
| if (context_.list_) {
|
| - context_.list_->AppendItem(cc::TransformDisplayItem::Create(transform));
|
| - closers_.push_back(cc::EndTransformDisplayItem::Create().release());
|
| + auto* item =
|
| + context_.list_->CreateAndAppendItem<cc::TransformDisplayItem>();
|
| + item->SetNew(transform);
|
| + closers_.push_back(TRANSFORM);
|
| } else {
|
| context_.canvas_->Transform(transform);
|
| }
|
|
|