diff options
author | reed <reed@google.com> | 2014-06-30 09:05:34 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-06-30 09:05:34 -0700 |
commit | 52d9ac6c92ddf33b3b05eb77ba9509a7aa441657 (patch) | |
tree | f9ceeceda78cb8e92ba4e8ac57b5fb680c85d576 /gm | |
parent | f3d15dc13abb825946ccad514412699828d5d709 (diff) |
stop calling SkCanvas::getDevice
BUG=skia:
R=bsalomon@google.com, robertphillips@google.com, junov@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/355193006
Diffstat (limited to 'gm')
-rw-r--r-- | gm/srcmode.cpp | 19 | ||||
-rw-r--r-- | gm/xfermodes3.cpp | 7 |
2 files changed, 14 insertions, 12 deletions
diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp index 6aa236f3f4..a8e02017e1 100644 --- a/gm/srcmode.cpp +++ b/gm/srcmode.cpp @@ -115,18 +115,21 @@ protected: } } - static SkSurface* compat_surface(SkCanvas* canvas, const SkISize& size, - bool skipGPU) { + static SkSurface* compat_surface(SkCanvas* canvas, const SkISize& size, bool skipGPU) { SkImageInfo info = SkImageInfo::MakeN32Premul(size); + + bool callNewSurface = true; #if SK_SUPPORT_GPU - SkBaseDevice* dev = canvas->getDevice(); - if (!skipGPU && dev->accessRenderTarget()) { - SkGpuDevice* gd = (SkGpuDevice*)dev; - GrContext* ctx = gd->context(); - return SkSurface::NewRenderTarget(ctx, info, 0); + if (canvas->getGrContext() && skipGPU) { + callNewSurface = false; } #endif - return SkSurface::NewRaster(info); + SkSurface* surface = callNewSurface ? canvas->newSurface(info) : NULL; + if (NULL == surface) { + // picture canvas will return null, so fall-back to raster + surface = SkSurface::NewRaster(info); + } + return surface; } virtual void onDraw(SkCanvas* canvas) { diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp index 92367f37bc..50b92c8694 100644 --- a/gm/xfermodes3.cpp +++ b/gm/xfermodes3.cpp @@ -123,13 +123,12 @@ private: SkCanvas* possiblyCreateTempCanvas(SkCanvas* baseCanvas, int w, int h) { SkCanvas* tempCanvas = NULL; #if SK_SUPPORT_GPU - GrRenderTarget* rt = baseCanvas->getDevice()->accessRenderTarget(); - if (NULL != rt) { - GrContext* context = rt->getContext(); + GrContext* context = baseCanvas->getGrContext(); + if (NULL != context) { GrTextureDesc desc; desc.fWidth = w; desc.fHeight = h; - desc.fConfig = rt->config(); + desc.fConfig = SkImageInfo2GrPixelConfig(baseCanvas->imageInfo()); desc.fFlags = kRenderTarget_GrTextureFlagBit; SkAutoTUnref<GrSurface> surface(context->createUncachedTexture(desc, NULL, 0)); SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(surface.get())); |