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

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: Rebased 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::GraphicsContextEnabled;
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.
285 // canvas. 288 graphics_context_status = ContentLayerClient::GraphicsContextDisabled;
286 canvas.clear();
287 break; 289 break;
288 case RECORD_WITH_SKRECORD: 290 case RECORD_WITH_SKRECORD:
289 recording.reset(new EXPERIMENTAL::SkRecording(layer_rect_.width(), 291 recording.reset(new EXPERIMENTAL::SkRecording(layer_rect_.width(),
290 layer_rect_.height())); 292 layer_rect_.height()));
291 canvas = skia::SharePtr(recording->canvas()); 293 canvas = skia::SharePtr(recording->canvas());
292 break; 294 break;
293 default: 295 default:
294 NOTREACHED(); 296 NOTREACHED();
295 } 297 }
296 298
297 if (canvas) { 299 if (canvas) {
danakj 2014/05/01 17:07:50 This if() can go away too?
Stephen Chennney 2014/05/01 19:12:26 Yep, done. I also think we should use the null can
298 canvas->save(); 300 canvas->save();
299 canvas->translate(SkFloatToScalar(-layer_rect_.x()), 301 canvas->translate(SkFloatToScalar(-layer_rect_.x()),
300 SkFloatToScalar(-layer_rect_.y())); 302 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 } 309 }
308 310
309 gfx::RectF opaque_layer_rect; 311 gfx::RectF opaque_layer_rect;
310 painter->PaintContents(canvas.get(), layer_rect_, &opaque_layer_rect); 312 painter->PaintContents(
313 canvas.get(), layer_rect_, &opaque_layer_rect, graphics_context_status);
311 314
312 if (canvas) 315 if (canvas)
danakj 2014/05/01 17:07:50 and this?
Stephen Chennney 2014/05/01 19:12:26 Done.
313 canvas->restore(); 316 canvas->restore();
314 picture_ = skia::AdoptRef(recorder.endRecording()); 317 picture_ = skia::AdoptRef(recorder.endRecording());
315 DCHECK(picture_); 318 DCHECK(picture_);
316 319
317 if (recording) { 320 if (recording) {
318 // SkRecording requires it's the only one holding onto canvas before we 321 // SkRecording requires it's the only one holding onto canvas before we
319 // may call releasePlayback(). (This helps enforce thread-safety.) 322 // may call releasePlayback(). (This helps enforce thread-safety.)
320 canvas.clear(); 323 canvas.clear();
321 playback_.reset(recording->releasePlayback()); 324 playback_.reset(recording->releasePlayback());
322 } 325 }
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 580
578 scoped_refptr<base::debug::ConvertableToTraceFormat> 581 scoped_refptr<base::debug::ConvertableToTraceFormat>
579 Picture::AsTraceableRecordData() const { 582 Picture::AsTraceableRecordData() const {
580 scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue()); 583 scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue());
581 record_data->Set("picture_id", TracedValue::CreateIDRef(this).release()); 584 record_data->Set("picture_id", TracedValue::CreateIDRef(this).release());
582 record_data->Set("layer_rect", MathUtil::AsValue(layer_rect_).release()); 585 record_data->Set("layer_rect", MathUtil::AsValue(layer_rect_).release());
583 return TracedValue::FromValue(record_data.release()); 586 return TracedValue::FromValue(record_data.release());
584 } 587 }
585 588
586 } // namespace cc 589 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698