Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: cc/resources/picture.cc

Issue 253013003: Enable disabling WebCore::GraphicsContext in telemetry. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/picture.h" 5 #include "cc/resources/picture.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 10
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 266
267 scoped_ptr<EXPERIMENTAL::SkRecording> recording; 267 scoped_ptr<EXPERIMENTAL::SkRecording> recording;
268 268
269 skia::RefPtr<SkCanvas> canvas; 269 skia::RefPtr<SkCanvas> canvas;
270 canvas = skia::SharePtr( 270 canvas = skia::SharePtr(
271 recorder.beginRecording(layer_rect_.width(), 271 recorder.beginRecording(layer_rect_.width(),
272 layer_rect_.height(), 272 layer_rect_.height(),
273 &factory, 273 &factory,
274 SkPicture::kUsePathBoundsForClip_RecordingFlag)); 274 SkPicture::kUsePathBoundsForClip_RecordingFlag));
275 275
276 ContentLayerClient::GraphicsContextStatus graphics_context_status =
277 ContentLayerClient::GRAPHICS_CONTEXT_ENABLED;
278
276 switch (recording_mode) { 279 switch (recording_mode) {
277 case RECORD_NORMALLY: 280 case RECORD_NORMALLY:
278 // Already setup for normal recording 281 // Already setup for normal recording.
279 break; 282 break;
280 case RECORD_WITH_SK_NULL_CANVAS: 283 case RECORD_WITH_SK_NULL_CANVAS:
281 canvas = skia::AdoptRef(SkCreateNullCanvas()); 284 canvas = skia::AdoptRef(SkCreateNullCanvas());
282 break; 285 break;
283 case RECORD_WITH_PAINTING_DISABLED: 286 case RECORD_WITH_PAINTING_DISABLED:
284 // Blink's GraphicsContext will disable painting when given a NULL 287 // We pass a disable flag through the paint calls.
danakj 2014/05/01 20:31:57 this comment says what, not why. can you either ma
Stephen Chennney 2014/05/02 18:40:44 Done.
285 // canvas. 288 canvas = skia::AdoptRef(SkCreateNullCanvas());
286 canvas.clear(); 289 graphics_context_status = ContentLayerClient::GRAPHICS_CONTEXT_DISABLED;
287 break; 290 break;
288 case RECORD_WITH_SKRECORD: 291 case RECORD_WITH_SKRECORD:
289 recording.reset(new EXPERIMENTAL::SkRecording(layer_rect_.width(), 292 recording.reset(new EXPERIMENTAL::SkRecording(layer_rect_.width(),
290 layer_rect_.height())); 293 layer_rect_.height()));
291 canvas = skia::SharePtr(recording->canvas()); 294 canvas = skia::SharePtr(recording->canvas());
292 break; 295 break;
293 default: 296 default:
294 NOTREACHED(); 297 NOTREACHED();
295 } 298 }
296 299
297 if (canvas) { 300 canvas->save();
298 canvas->save(); 301 canvas->translate(SkFloatToScalar(-layer_rect_.x()),
299 canvas->translate(SkFloatToScalar(-layer_rect_.x()), 302 SkFloatToScalar(-layer_rect_.y()));
300 SkFloatToScalar(-layer_rect_.y()));
301 303
302 SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(), 304 SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(),
303 layer_rect_.y(), 305 layer_rect_.y(),
304 layer_rect_.width(), 306 layer_rect_.width(),
305 layer_rect_.height()); 307 layer_rect_.height());
306 canvas->clipRect(layer_skrect); 308 canvas->clipRect(layer_skrect);
307 }
308 309
309 gfx::RectF opaque_layer_rect; 310 gfx::RectF opaque_layer_rect;
310 painter->PaintContents(canvas.get(), layer_rect_, &opaque_layer_rect); 311 painter->PaintContents(
312 canvas.get(), layer_rect_, &opaque_layer_rect, graphics_context_status);
311 313
312 if (canvas) 314 canvas->restore();
313 canvas->restore();
314 picture_ = skia::AdoptRef(recorder.endRecording()); 315 picture_ = skia::AdoptRef(recorder.endRecording());
315 DCHECK(picture_); 316 DCHECK(picture_);
316 317
317 if (recording) { 318 if (recording) {
318 // SkRecording requires it's the only one holding onto canvas before we 319 // SkRecording requires it's the only one holding onto canvas before we
319 // may call releasePlayback(). (This helps enforce thread-safety.) 320 // may call releasePlayback(). (This helps enforce thread-safety.)
320 canvas.clear(); 321 canvas.clear();
321 playback_.reset(recording->releasePlayback()); 322 playback_.reset(recording->releasePlayback());
322 } 323 }
323 324
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 578
578 scoped_refptr<base::debug::ConvertableToTraceFormat> 579 scoped_refptr<base::debug::ConvertableToTraceFormat>
579 Picture::AsTraceableRecordData() const { 580 Picture::AsTraceableRecordData() const {
580 scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue()); 581 scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue());
581 record_data->Set("picture_id", TracedValue::CreateIDRef(this).release()); 582 record_data->Set("picture_id", TracedValue::CreateIDRef(this).release());
582 record_data->Set("layer_rect", MathUtil::AsValue(layer_rect_).release()); 583 record_data->Set("layer_rect", MathUtil::AsValue(layer_rect_).release());
583 return TracedValue::FromValue(record_data.release()); 584 return TracedValue::FromValue(record_data.release());
584 } 585 }
585 586
586 } // namespace cc 587 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698