diff options
author | reed <reed@google.com> | 2014-12-11 07:07:37 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-11 07:07:38 -0800 |
commit | 2ff1fcede1e9525285c5de1f35fb2dcb0fab32bd (patch) | |
tree | d031604a9c76281aa645c56a94ada8422b5b291d /tests/RecordReplaceDrawTest.cpp | |
parent | 8da8e9d7511c2f60855c2e3334ae0fe27365bc96 (diff) |
Defer saves() until they're needed
patch from issue 759443006 at patchset 40001 (http://crrev.com/759443006#ps40001)
BUG=skia:
Review URL: https://codereview.chromium.org/767333002
Diffstat (limited to 'tests/RecordReplaceDrawTest.cpp')
-rw-r--r-- | tests/RecordReplaceDrawTest.cpp | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/tests/RecordReplaceDrawTest.cpp b/tests/RecordReplaceDrawTest.cpp index f1ebf82de0..e0e9466a2e 100644 --- a/tests/RecordReplaceDrawTest.cpp +++ b/tests/RecordReplaceDrawTest.cpp @@ -52,10 +52,18 @@ DEF_TEST(RecordReplaceDraw_Abort, r) { JustOneDraw callback; GrRecordReplaceDraw(pic, &canvas, NULL, SkMatrix::I(), &callback); - REPORTER_ASSERT(r, 3 == rerecord.count()); - assert_type<SkRecords::Save>(r, rerecord, 0); - assert_type<SkRecords::DrawRect>(r, rerecord, 1); - assert_type<SkRecords::Restore>(r, rerecord, 2); + switch (rerecord.count()) { + case 3: + assert_type<SkRecords::Save>(r, rerecord, 0); + assert_type<SkRecords::DrawRect>(r, rerecord, 1); + assert_type<SkRecords::Restore>(r, rerecord, 2); + break; + case 1: + assert_type<SkRecords::DrawRect>(r, rerecord, 0); + break; + default: + REPORTER_ASSERT(r, false); + } } // Make sure GrRecordReplaceDraw balances unbalanced saves @@ -68,7 +76,7 @@ DEF_TEST(RecordReplaceDraw_Unbalanced, r) { // We won't balance this, but GrRecordReplaceDraw will for us. canvas->save(); - + canvas->scale(2, 2); pic.reset(recorder.endRecording()); } @@ -77,11 +85,8 @@ DEF_TEST(RecordReplaceDraw_Unbalanced, r) { GrRecordReplaceDraw(pic, &canvas, NULL, SkMatrix::I(), NULL/*callback*/); - REPORTER_ASSERT(r, 4 == rerecord.count()); - assert_type<SkRecords::Save>(r, rerecord, 0); - assert_type<SkRecords::Save>(r, rerecord, 1); - assert_type<SkRecords::Restore>(r, rerecord, 2); - assert_type<SkRecords::Restore>(r, rerecord, 3); + // ensure rerecord is balanced (in this case by checking that the count is even) + REPORTER_ASSERT(r, (rerecord.count() & 1) == 0); } // Test out the layer replacement functionality with and w/o a BBH @@ -127,14 +132,22 @@ void test_replacements(skiatest::Reporter* r, GrContext* context, bool useBBH) { SkRecorder canvas(&rerecord, kWidth, kHeight); GrRecordReplaceDraw(pic, &canvas, layerCache, SkMatrix::I(), NULL/*callback*/); - REPORTER_ASSERT(r, 7 == rerecord.count()); - assert_type<SkRecords::Save>(r, rerecord, 0); - assert_type<SkRecords::Save>(r, rerecord, 1); - assert_type<SkRecords::SetMatrix>(r, rerecord, 2); - assert_type<SkRecords::DrawBitmapRectToRect>(r, rerecord, 3); - assert_type<SkRecords::Restore>(r, rerecord, 4); - assert_type<SkRecords::DrawRect>(r, rerecord, 5); - assert_type<SkRecords::Restore>(r, rerecord, 6); + int recount = rerecord.count(); + REPORTER_ASSERT(r, 5 == recount || 7 == recount); + + int index = 0; + if (7 == recount) { + assert_type<SkRecords::Save>(r, rerecord, 0); + index += 1; + } + assert_type<SkRecords::Save>(r, rerecord, index + 0); + assert_type<SkRecords::SetMatrix>(r, rerecord, index + 1); + assert_type<SkRecords::DrawBitmapRectToRect>(r, rerecord, index + 2); + assert_type<SkRecords::Restore>(r, rerecord, index + 3); + assert_type<SkRecords::DrawRect>(r, rerecord, index + 4); + if (7 == recount) { + assert_type<SkRecords::Restore>(r, rerecord, 6); + } } DEF_GPUTEST(RecordReplaceDraw, r, factory) { |