Index: cc/resources/resource_provider.cc |
diff --git a/cc/resources/resource_provider.cc b/cc/resources/resource_provider.cc |
index 5389e4ba4c6786ebb9ed2d28fe1fdecc14981a9f..63414bb7fb27884b6a0cc720213afd9a3fadc419 100644 |
--- a/cc/resources/resource_provider.cc |
+++ b/cc/resources/resource_provider.cc |
@@ -25,6 +25,7 @@ |
#include "third_party/khronos/GLES2/gl2ext.h" |
#include "third_party/skia/include/core/SkSurface.h" |
#include "third_party/skia/include/gpu/GrContext.h" |
+#include "third_party/skia/include/utils/SkNullCanvas.h" |
#include "ui/gfx/frame_time.h" |
#include "ui/gfx/rect.h" |
#include "ui/gfx/vector2d.h" |
@@ -454,8 +455,11 @@ skia::RefPtr<SkCanvas> ResourceProvider::GpuRasterBuffer::AcquireSkCanvas() { |
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
"ResourceProvider::GpuRasterBuffer::AcquireSkCanvas"); |
- return surface_ ? skia::SharePtr(surface_->getCanvas()) |
- : skia::RefPtr<SkCanvas>(); |
+ skia::RefPtr<SkCanvas> canvas = surface_ |
+ ? skia::SharePtr(surface_->getCanvas()) |
+ : skia::AdoptRef(SkCreateNullCanvas()); |
+ canvas->save(); |
+ return canvas; |
} |
void ResourceProvider::GpuRasterBuffer::ReleaseSkCanvas( |
@@ -463,6 +467,8 @@ void ResourceProvider::GpuRasterBuffer::ReleaseSkCanvas( |
// Note that this function is called from a worker thread. |
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
"ResourceProvider::GpuRasterBuffer::ReleaseSkCanvas"); |
+ |
+ canvas->restore(); |
} |
ResourceProvider::ImageRasterBuffer::ImageRasterBuffer( |
@@ -506,7 +512,7 @@ skia::RefPtr<SkCanvas> ResourceProvider::ImageRasterBuffer::AcquireSkCanvas() { |
"ResourceProvider::ImageRasterBuffer::AcquireSkCanvas"); |
if (!mapped_buffer_) |
- return skia::RefPtr<SkCanvas>(); |
+ return skia::AdoptRef(SkCreateNullCanvas()); |
MakeBitmap(&raster_bitmap_, |
mapped_buffer_, |
@@ -570,7 +576,7 @@ skia::RefPtr<SkCanvas> ResourceProvider::PixelRasterBuffer::AcquireSkCanvas() { |
"ResourceProvider::PixelRasterBuffer::AcquireSkCanvas"); |
if (!mapped_buffer_) |
- return skia::RefPtr<SkCanvas>(); |
+ return skia::AdoptRef(SkCreateNullCanvas()); |
MakeBitmap(&raster_bitmap_, |
mapped_buffer_, |