diff options
author | scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-12-04 15:08:56 +0000 |
---|---|---|
committer | scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-12-04 15:08:56 +0000 |
commit | 4b90b1122c93e6600ea352f4ccf1dfc54c8bb146 (patch) | |
tree | 16ee994e3b2293fde0d1265eb0d57c4164db3dea /tests | |
parent | ebce0301082cda9dc3e3298f6db91d46fe66298b (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.cpp | 21 |
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); |