remove kReturnNullForEmpty_FinishFlag feature
It's unused, and doesn't appear to be correct, returning nullptr too
early when we should return a non-empty SkMiniPicture.
The mini-recorder path will return a zero-allocation SkEmptyPicture anyway.
Change-Id: I1be538049e731acfc2b0f8b4f30cafee434a91dc
Reviewed-on: https://skia-review.googlesource.com/12626
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
diff --git a/include/core/SkPictureRecorder.h b/include/core/SkPictureRecorder.h
index 9e29e0d..d898b91 100644
--- a/include/core/SkPictureRecorder.h
+++ b/include/core/SkPictureRecorder.h
@@ -38,7 +38,6 @@
};
enum FinishFlags {
- kReturnNullForEmpty_FinishFlag = 1 << 0, // no draw-ops will return nullptr
};
/** Returns the canvas that records the drawing commands.
diff --git a/src/core/SkPictureRecorder.cpp b/src/core/SkPictureRecorder.cpp
index aaf1d0d..701df7d 100644
--- a/src/core/SkPictureRecorder.cpp
+++ b/src/core/SkPictureRecorder.cpp
@@ -56,21 +56,12 @@
fRecorder->restoreToCount(1); // If we were missing any restores, add them now.
if (fRecord->count() == 0) {
- if (finishFlags & kReturnNullForEmpty_FinishFlag) {
- return nullptr;
- }
return fMiniRecorder.detachAsPicture(fCullRect);
}
// TODO: delay as much of this work until just before first playback?
SkRecordOptimize(fRecord.get());
- if (fRecord->count() == 0) {
- if (finishFlags & kReturnNullForEmpty_FinishFlag) {
- return nullptr;
- }
- }
-
SkDrawableList* drawableList = fRecorder->getDrawableList();
SkBigPicture::SnapshotArray* pictList =
drawableList ? drawableList->newDrawableSnapshot() : nullptr;
@@ -125,12 +116,6 @@
SkRecordOptimize(fRecord.get());
- if (fRecord->count() == 0) {
- if (finishFlags & kReturnNullForEmpty_FinishFlag) {
- return nullptr;
- }
- }
-
if (fBBH.get()) {
SkAutoTMalloc<SkRect> bounds(fRecord->count());
SkRecordFillBounds(fCullRect, *fRecord, bounds);
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 0b929d6..07cbccc 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -1136,67 +1136,3 @@
}
#endif // SK_SUPPORT_GPU
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Disable until we properly fix https://bugs.chromium.org/p/skia/issues/detail?id=5548
-#if 0
-static void empty_ops(SkCanvas* canvas) {
-}
-static void clip_ops(SkCanvas* canvas) {
- canvas->save();
- canvas->clipRect(SkRect::MakeWH(20, 20));
- canvas->restore();
-}
-static void matrix_ops(SkCanvas* canvas) {
- canvas->save();
- canvas->scale(2, 3);
- canvas->restore();
-}
-static void matrixclip_ops(SkCanvas* canvas) {
- canvas->save();
- canvas->scale(2, 3);
- canvas->clipRect(SkRect::MakeWH(20, 20));
- canvas->restore();
-}
-typedef void (*CanvasProc)(SkCanvas*);
-
-// Test the kReturnNullForEmpty_FinishFlag option when recording
-//
-DEF_TEST(Picture_RecordEmpty, r) {
- const SkRect cull = SkRect::MakeWH(100, 100);
-
- CanvasProc procs[] { empty_ops, clip_ops, matrix_ops, matrixclip_ops };
-
- for (auto proc : procs) {
- {
- SkPictureRecorder rec;
- proc(rec.beginRecording(cull));
- sk_sp<SkPicture> pic = rec.finishRecordingAsPicture(0);
- REPORTER_ASSERT(r, pic.get());
- REPORTER_ASSERT(r, pic->approximateOpCount() == 0);
- }
- {
- SkPictureRecorder rec;
- proc(rec.beginRecording(cull));
- sk_sp<SkPicture> pic = rec.finishRecordingAsPicture(
- SkPictureRecorder::kReturnNullForEmpty_FinishFlag);
- REPORTER_ASSERT(r, !pic.get());
- }
- {
- SkPictureRecorder rec;
- proc(rec.beginRecording(cull));
- sk_sp<SkDrawable> dr = rec.finishRecordingAsDrawable(0);
- REPORTER_ASSERT(r, dr.get());
- }
- {
- SkPictureRecorder rec;
- proc(rec.beginRecording(cull));
- sk_sp<SkDrawable> dr = rec.finishRecordingAsDrawable(
- SkPictureRecorder::kReturnNullForEmpty_FinishFlag);
- REPORTER_ASSERT(r, !dr.get());
- }
- }
-}
-#endif
-