Index: tests/SurfaceTest.cpp |
=================================================================== |
--- tests/SurfaceTest.cpp (revision 8437) |
+++ tests/SurfaceTest.cpp (working copy) |
@@ -133,15 +133,32 @@ |
testPaint)) |
} |
+static void TestSurfaceWritableAfterSnapshotRelease(skiatest::Reporter* reporter, |
+ SurfaceType surfaceType, |
+ GrContext* context) { |
+ // This test succeeds by not triggering an assertion. |
+ // The test verifies that the surface remains writable (usable) after |
+ // acquiring and releasing a snapshot without triggering a copy on write. |
+ SkSurface* surface = createSurface(surfaceType, context); |
+ SkAutoTUnref<SkSurface> aur_surface(surface); |
+ SkCanvas* canvas = surface->getCanvas(); |
+ canvas->clear(1); |
+ surface->newImageShapshot()->unref(); // Create and destroy SkImage |
+ canvas->clear(2); |
+} |
+ |
static void TestSurface(skiatest::Reporter* reporter) { |
bsalomon
2013/04/03 14:13:43
Just noting that TestSurface and TestSurfaceGpu co
|
TestSurfaceCopyOnWrite(reporter, kRaster_SurfaceType, NULL); |
TestSurfaceCopyOnWrite(reporter, kPicture_SurfaceType, NULL); |
+ TestSurfaceWritableAfterSnapshotRelease(reporter, kRaster_SurfaceType, NULL); |
+ TestSurfaceWritableAfterSnapshotRelease(reporter, kPicture_SurfaceType, NULL); |
} |
static void TestSurfaceGpu(skiatest::Reporter* reporter, GrContextFactory* factory) { |
#if SK_SUPPORT_GPU |
GrContext* context = factory->get(GrContextFactory::kNative_GLContextType); |
TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context); |
+ TestSurfaceWritableAfterSnapshotRelease(reporter, kGpu_SurfaceType, context); |
#endif |
} |