From 65151754b9fdb6a968d7307764c20655d1b680a0 Mon Sep 17 00:00:00 2001 From: piotaixr Date: Thu, 16 Oct 2014 11:58:39 -0700 Subject: Override SkCanvas::drawImage() in SkRecorder. BUG=skia:2947 Review URL: https://codereview.chromium.org/610003002 --- tests/RecorderTest.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'tests/RecorderTest.cpp') diff --git a/tests/RecorderTest.cpp b/tests/RecorderTest.cpp index aced54f7a9..d81bf059ef 100644 --- a/tests/RecorderTest.cpp +++ b/tests/RecorderTest.cpp @@ -12,6 +12,7 @@ #include "SkRecorder.h" #include "SkRecords.h" #include "SkShader.h" +#include "SkSurface.h" #define COUNT(T) + 1 static const int kRecordTypes = SK_RECORD_TYPES(COUNT); @@ -150,3 +151,41 @@ DEF_TEST(Recorder_IsDrawingToLayer, r) { REPORTER_ASSERT(r, !recorder.isDrawingToLayer()); } +DEF_TEST(Recorder_drawImage_takeReference, reporter) { + + SkAutoTUnref image; + { + SkAutoTUnref surface(SkSurface::NewRasterPMColor(100, 100)); + surface->getCanvas()->clear(SK_ColorGREEN); + image.reset(surface->newImageSnapshot()); + } + { + SkRecord record; + SkRecorder recorder(&record, 100, 100); + + // DrawImage is supposed to take a reference + recorder.drawImage(image.get(), 0, 0); + REPORTER_ASSERT(reporter, !image->unique()); + + Tally tally; + tally.apply(record); + + REPORTER_ASSERT(reporter, 1 == tally.count()); + } + REPORTER_ASSERT(reporter, image->unique()); + + { + SkRecord record; + SkRecorder recorder(&record, 100, 100); + + // DrawImageRect is supposed to take a reference + recorder.drawImageRect(image.get(), 0, SkRect::MakeWH(100, 100)); + REPORTER_ASSERT(reporter, !image->unique()); + + Tally tally; + tally.apply(record); + + REPORTER_ASSERT(reporter, 1 == tally.count()); + } + REPORTER_ASSERT(reporter, image->unique()); +} -- cgit v1.2.3