Chromium Code Reviews| Index: cc/resources/picture.cc |
| diff --git a/cc/resources/picture.cc b/cc/resources/picture.cc |
| index 93b59aea7435532456ab03b9248113b8e5c8d46c..03ddec0226595e9814dbfa6379c64f9bd1f68423 100644 |
| --- a/cc/resources/picture.cc |
| +++ b/cc/resources/picture.cc |
| @@ -249,17 +249,21 @@ void Picture::Record(ContentLayerClient* painter, |
| DCHECK(!picture_); |
| DCHECK(!tile_grid_info.fTileInterval.isEmpty()); |
| - picture_ = skia::AdoptRef(new SkTileGridPicture( |
| - layer_rect_.width(), layer_rect_.height(), tile_grid_info)); |
| + |
| + skia::RefPtr<SkPictureFactory> factory = |
| + skia::AdoptRef(new SkTileGridPictureFactory(tile_grid_info)); |
| + SkPictureRecorder recorder(factory.get()); |
| skia::RefPtr<SkCanvas> canvas; |
| + canvas = skia::SharePtr(recorder.beginRecording( |
|
enne (OOO)
2014/04/15 01:10:39
Should all the beginRecording calls be wrapped in
robertphillips
2014/04/15 15:37:04
As is, I think the behavior is correct here but ma
enne (OOO)
2014/04/15 16:45:16
Gotcha. The ref here is just RAII. Makes sense.
|
| + layer_rect_.width(), |
| + layer_rect_.height(), |
| + SkPicture::kUsePathBoundsForClip_RecordingFlag | |
| + SkPicture::kOptimizeForClippedPlayback_RecordingFlag)); |
| + |
| switch (recording_mode) { |
| case RECORD_NORMALLY: |
| - canvas = skia::SharePtr(picture_->beginRecording( |
| - layer_rect_.width(), |
| - layer_rect_.height(), |
| - SkPicture::kUsePathBoundsForClip_RecordingFlag | |
| - SkPicture::kOptimizeForClippedPlayback_RecordingFlag)); |
| + // Already setup for normal recording |
|
enne (OOO)
2014/04/15 01:10:39
Why did the code move out of this switch?
robertphillips
2014/04/15 15:37:04
The old code always generated an SkPicture (albeit
enne (OOO)
2014/04/15 16:45:16
I guess I'm asking because in all other cases, the
robertphillips
2014/04/15 19:17:32
The RECORD_WITH_PAINTING_DISABLED and RECORD_WITH_
enne (OOO)
2014/04/15 19:43:27
I see. So even though you delete the canvas that
|
| break; |
| case RECORD_WITH_SK_NULL_CANVAS: |
| canvas = skia::AdoptRef(SkCreateNullCanvas()); |
| @@ -267,6 +271,7 @@ void Picture::Record(ContentLayerClient* painter, |
| case RECORD_WITH_PAINTING_DISABLED: |
| // Blink's GraphicsContext will disable painting when given a NULL |
| // canvas. |
| + canvas.clear(); |
| break; |
| default: |
| NOTREACHED(); |
| @@ -289,8 +294,7 @@ void Picture::Record(ContentLayerClient* painter, |
| if (canvas) |
| canvas->restore(); |
| - if (picture_->getRecordingCanvas()) |
| - picture_->endRecording(); |
| + picture_ = skia::AdoptRef(recorder.endRecording()); |
|
enne (OOO)
2014/04/15 01:10:39
Previously, picture_ was always non-null if the cc
robertphillips
2014/04/15 15:37:04
picture_ should still always be non-null after a c
enne (OOO)
2014/04/15 16:45:16
Oh, ok! I misunderstood the change description her
robertphillips
2014/04/15 19:17:32
I have added a DCHECK.
|
| opaque_rect_ = gfx::ToEnclosedRect(opaque_layer_rect); |