split SkPictureRecorder out of SkPicture
https://codereview.chromium.org/214953003/
git-svn-id: http://skia.googlecode.com/svn/trunk@14171 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/benchmain.cpp b/bench/benchmain.cpp
index cc55bb9..eb3947a 100644
--- a/bench/benchmain.cpp
+++ b/bench/benchmain.cpp
@@ -122,7 +122,7 @@
stream.write(data->data(), data->size());
}
-static void performClip(SkCanvas* canvas, int w, int h) {
+static void perform_clip(SkCanvas* canvas, int w, int h) {
SkRect r;
r.set(SkIntToScalar(10), SkIntToScalar(10),
@@ -134,7 +134,7 @@
canvas->clipRect(r, SkRegion::kXOR_Op);
}
-static void performRotate(SkCanvas* canvas, int w, int h) {
+static void perform_rotate(SkCanvas* canvas, int w, int h) {
const SkScalar x = SkIntToScalar(w) / 2;
const SkScalar y = SkIntToScalar(h) / 2;
@@ -143,7 +143,7 @@
canvas->translate(-x, -y);
}
-static void performScale(SkCanvas* canvas, int w, int h) {
+static void perform_scale(SkCanvas* canvas, int w, int h) {
const SkScalar x = SkIntToScalar(w) / 2;
const SkScalar y = SkIntToScalar(h) / 2;
@@ -480,7 +480,8 @@
#endif
SkAutoTUnref<SkCanvas> canvas;
- SkPicture recordFrom, recordTo;
+ SkAutoTUnref<SkPicture> recordFrom;
+ SkPictureRecorder recorderTo;
const SkIPoint dim = bench->getSize();
const SkPicture::RecordingFlags kRecordFlags =
@@ -505,13 +506,15 @@
canvas.reset(SkDeferredCanvas::Create(surface.get()));
break;
case kRecord_BenchMode:
- canvas.reset(SkRef(recordTo.beginRecording(dim.fX, dim.fY, kRecordFlags)));
+ canvas.reset(SkRef(recorderTo.beginRecording(dim.fX, dim.fY, kRecordFlags)));
break;
- case kPictureRecord_BenchMode:
- bench->draw(1, recordFrom.beginRecording(dim.fX, dim.fY, kRecordFlags));
- recordFrom.endRecording();
- canvas.reset(SkRef(recordTo.beginRecording(dim.fX, dim.fY, kRecordFlags)));
+ case kPictureRecord_BenchMode: {
+ SkPictureRecorder recorderFrom;
+ bench->draw(1, recorderFrom.beginRecording(dim.fX, dim.fY, kRecordFlags));
+ recordFrom.reset(recorderFrom.endRecording());
+ canvas.reset(SkRef(recorderTo.beginRecording(dim.fX, dim.fY, kRecordFlags)));
break;
+ }
case kNormal_BenchMode:
canvas.reset(SkRef(surface->getCanvas()));
break;
@@ -522,9 +525,15 @@
if (NULL != canvas) {
canvas->clear(SK_ColorWHITE);
- if (FLAGS_clip) { performClip(canvas, dim.fX, dim.fY); }
- if (FLAGS_scale) { performScale(canvas, dim.fX, dim.fY); }
- if (FLAGS_rotate) { performRotate(canvas, dim.fX, dim.fY); }
+ if (FLAGS_clip) {
+ perform_clip(canvas, dim.fX, dim.fY);
+ }
+ if (FLAGS_scale) {
+ perform_scale(canvas, dim.fX, dim.fY);
+ }
+ if (FLAGS_rotate) {
+ perform_rotate(canvas, dim.fX, dim.fY);
+ }
}
if (!loggedBenchName) {
@@ -569,7 +578,7 @@
if ((benchMode == kRecord_BenchMode || benchMode == kPictureRecord_BenchMode)) {
// Clear the recorded commands so that they do not accumulate.
- canvas.reset(SkRef(recordTo.beginRecording(dim.fX, dim.fY, kRecordFlags)));
+ canvas.reset(SkRef(recorderTo.beginRecording(dim.fX, dim.fY, kRecordFlags)));
}
timer.start();
@@ -591,7 +600,7 @@
}
if (benchMode == kPictureRecord_BenchMode) {
- recordFrom.draw(canvas);
+ recordFrom->draw(canvas);
} else {
bench->draw(loops, canvas);
}