Index: src/image/SkSurface_Gpu.cpp |
=================================================================== |
--- src/image/SkSurface_Gpu.cpp (revision 8683) |
+++ src/image/SkSurface_Gpu.cpp (working copy) |
@@ -23,7 +23,7 @@ |
virtual SkImage* onNewImageSnapshot() SK_OVERRIDE; |
virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, |
const SkPaint*) SK_OVERRIDE; |
- virtual void onCopyOnWrite(SkImage*, SkCanvas*) SK_OVERRIDE; |
+ virtual void onCopyOnWrite() SK_OVERRIDE; |
private: |
SkGpuDevice* fDevice; |
@@ -86,20 +86,21 @@ |
// Create a new SkGpuDevice and, if necessary, copy the contents of the old |
// device into it. Note that this flushes the SkGpuDevice but |
// doesn't force an OpenGL flush. |
-void SkSurface_Gpu::onCopyOnWrite(SkImage* image, SkCanvas* canvas) { |
+void SkSurface_Gpu::onCopyOnWrite() { |
GrRenderTarget* rt = (GrRenderTarget*) fDevice->accessRenderTarget(); |
// are we sharing our render target with the image? |
- if (rt->asTexture() == SkTextureImageGetTexture(image)) { |
+ SkASSERT(NULL != this->getCachedImage()); |
+ if (rt->asTexture() == SkTextureImageGetTexture(this->getCachedImage())) { |
SkGpuDevice* newDevice = static_cast<SkGpuDevice*>( |
fDevice->createCompatibleDevice(fDevice->config(), fDevice->width(), |
fDevice->height(), fDevice->isOpaque())); |
SkAutoTUnref<SkGpuDevice> aurd(newDevice); |
fDevice->context()->copyTexture(rt->asTexture(), |
(GrRenderTarget*)newDevice->accessRenderTarget()); |
- SkASSERT(NULL != canvas); |
- SkASSERT(canvas->getDevice() == fDevice); |
- canvas->setDevice(newDevice); |
+ SkASSERT(NULL != this->getCachedCanvas()); |
+ SkASSERT(this->getCachedCanvas()->getDevice() == fDevice); |
+ this->getCachedCanvas()->setDevice(newDevice); |
SkRefCnt_SafeAssign(fDevice, newDevice); |
} |
} |