aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-12-04 15:08:56 +0000
committerGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-12-04 15:08:56 +0000
commit4b90b1122c93e6600ea352f4ccf1dfc54c8bb146 (patch)
tree16ee994e3b2293fde0d1265eb0d57c4164db3dea /tests
parentebce0301082cda9dc3e3298f6db91d46fe66298b (diff)
Handle recording a bitmap if copy fails.
If SkBitmapHeap::insert() returns INVALID_SLOT, assert at picture record time so we can debug, but allow it to continue in release mode, so that we can still capture a picture. At playback time, print a message so we know that there was an error. Review URL: https://codereview.appspot.com/6873050 git-svn-id: http://skia.googlecode.com/svn/trunk@6664 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests')
-rw-r--r--tests/PictureTest.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 79ca3132f7..e62d5aa959 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -154,7 +154,6 @@ static void test_gatherpixelrefs(skiatest::Reporter* reporter) {
static const int N = 4;
SkBitmap bm[N];
- SkPMColor pmcolors[N];
SkPixelRef* refs[N];
const SkPoint pos[] = {
@@ -306,10 +305,30 @@ static void test_peephole(skiatest::Reporter* reporter) {
}
}
+#ifndef SK_DEBUG
+// Only test this is in release mode. We deliberately crash in debug mode, since a valid caller
+// should never do this.
+static void test_bad_bitmap() {
+ // This bitmap has a width and height but no pixels. As a result, attempting to record it will
+ // fail.
+ SkBitmap bm;
+ bm.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
+ SkPicture picture;
+ SkCanvas* recordingCanvas = picture.beginRecording(100, 100);
+ recordingCanvas->drawBitmap(bm, 0, 0);
+ picture.endRecording();
+
+ SkCanvas canvas;
+ canvas.drawPicture(picture);
+}
+#endif
+
static void TestPicture(skiatest::Reporter* reporter) {
#ifdef SK_DEBUG
test_deleting_empty_playback();
test_serializing_empty_picture();
+#else
+ test_bad_bitmap();
#endif
test_peephole(reporter);
test_gatherpixelrefs(reporter);