Index: tests/RecorderTest.cpp |
diff --git a/tests/RecorderTest.cpp b/tests/RecorderTest.cpp |
index aced54f7a906fa32c56ffc5ee25ad8b10fd8fd1f..d81bf059ef34e38659910c52538df15c658651de 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<SkImage> image; |
+ { |
+ SkAutoTUnref<SkSurface> 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<SkRecords::DrawImage>()); |
+ } |
+ 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<SkRecords::DrawImageRect>()); |
+ } |
+ REPORTER_ASSERT(reporter, image->unique()); |
+} |