Chromium Code Reviews| Index: Source/core/platform/graphics/skia/ImageBufferSkia.cpp |
| diff --git a/Source/core/platform/graphics/skia/ImageBufferSkia.cpp b/Source/core/platform/graphics/skia/ImageBufferSkia.cpp |
| index 72efc6e387ee5773210bf22b96345fe677d0fb9e..87255321edb553058621a1876d1b78da22e9d45e 100644 |
| --- a/Source/core/platform/graphics/skia/ImageBufferSkia.cpp |
| +++ b/Source/core/platform/graphics/skia/ImageBufferSkia.cpp |
| @@ -66,7 +66,6 @@ namespace WebCore { |
| // PlatformContext doesn't actually need to use the object, and this makes all |
| // the ownership easier to manage. |
| ImageBufferData::ImageBufferData(const IntSize& size) |
| - : m_platformContext(0) // Canvas is set in ImageBuffer constructor. |
| { |
| } |
| @@ -93,7 +92,6 @@ static SkCanvas* createAcceleratedCanvas(const IntSize& size, ImageBufferData* d |
| data->m_layerBridge = Canvas2DLayerBridge::create(context3D.release(), canvas, bridgeOpacityMode, threadMode); |
| // If canvas buffer allocation failed, debug build will have asserted |
| // For release builds, we must verify whether the device has a render target |
| - data->m_platformContext.setAccelerated(true); |
| return canvas; |
| } |
| @@ -137,8 +135,7 @@ ImageBuffer::ImageBuffer(const IntSize& size, float resolutionScale, ColorSpace, |
| } |
| m_data.m_canvas = adoptPtr(new SkCanvas(device)); |
| - m_data.m_platformContext.setCanvas(m_data.m_canvas.get()); |
| - m_context = adoptPtr(new GraphicsContext(&m_data.m_platformContext)); |
| + m_context = adoptPtr(new GraphicsContext(m_data.m_canvas.get())); |
| m_context->setShouldSmoothFonts(false); |
| m_context->scale(FloatSize(m_resolutionScale, m_resolutionScale)); |
| @@ -153,8 +150,11 @@ ImageBuffer::ImageBuffer(const IntSize& size, float resolutionScale, ColorSpace, |
| { |
| OwnPtr<SkCanvas> canvas; |
| - if (renderingMode == Accelerated) |
| + bool isAccelerated = false; |
|
jamesr
2013/04/30 19:57:08
nit: isAccelerated is the same as renderingMode ==
|
| + if (renderingMode == Accelerated) { |
| canvas = adoptPtr(createAcceleratedCanvas(size, &m_data, opacityMode)); |
| + isAccelerated = true; |
| + } |
| else if (renderingMode == UnacceleratedNonPlatformBuffer) |
| canvas = adoptPtr(createNonPlatformCanvas(size)); |
| @@ -167,9 +167,9 @@ ImageBuffer::ImageBuffer(const IntSize& size, float resolutionScale, ColorSpace, |
| } |
| m_data.m_canvas = canvas.release(); |
| - m_data.m_platformContext.setCanvas(m_data.m_canvas.get()); |
| - m_context = adoptPtr(new GraphicsContext(&m_data.m_platformContext)); |
| + m_context = adoptPtr(new GraphicsContext(m_data.m_canvas.get())); |
| m_context->setShouldSmoothFonts(opacityMode == Opaque); |
| + m_context->platformContext()->setAccelerated(isAccelerated); |
| m_context->scale(FloatSize(m_resolutionScale, m_resolutionScale)); |
| // Clear the background transparent or opaque, as required. It would be nice if this wasn't |
| @@ -208,7 +208,7 @@ static SkBitmap deepSkBitmapCopy(const SkBitmap& bitmap) |
| PassRefPtr<Image> ImageBuffer::copyImage(BackingStoreCopy copyBehavior, ScaleBehavior) const |
| { |
| - const SkBitmap& bitmap = *m_data.m_platformContext.bitmap(); |
| + const SkBitmap& bitmap = *context()->platformContext()->bitmap(); |
| // FIXME: Start honoring ScaleBehavior to scale 2x buffers down to 1x. |
| return BitmapImage::create(NativeImageSkia::create(copyBehavior == CopyBackingStore ? deepSkBitmapCopy(bitmap) : bitmap, m_resolutionScale)); |
| } |
| @@ -264,7 +264,7 @@ static bool drawNeedsCopy(GraphicsContext* src, GraphicsContext* dst) |
| void ImageBuffer::draw(GraphicsContext* context, ColorSpace styleColorSpace, const FloatRect& destRect, const FloatRect& srcRect, |
| CompositeOperator op, BlendMode, bool useLowQualityScale) |
| { |
| - const SkBitmap& bitmap = *m_data.m_platformContext.bitmap(); |
| + const SkBitmap& bitmap = *m_context->platformContext()->bitmap(); |
| RefPtr<Image> image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap)); |
| context->drawImage(image.get(), styleColorSpace, destRect, srcRect, op, DoNotRespectImageOrientation, useLowQualityScale); |
| } |
| @@ -272,7 +272,7 @@ void ImageBuffer::draw(GraphicsContext* context, ColorSpace styleColorSpace, con |
| void ImageBuffer::drawPattern(GraphicsContext* context, const FloatRect& srcRect, const AffineTransform& patternTransform, |
| const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator op, const FloatRect& destRect) |
| { |
| - const SkBitmap& bitmap = *m_data.m_platformContext.bitmap(); |
| + const SkBitmap& bitmap = *m_context->platformContext()->bitmap(); |
| RefPtr<Image> image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap)); |
| image->drawPattern(context, srcRect, patternTransform, phase, styleColorSpace, op, destRect); |
| } |
| @@ -280,7 +280,7 @@ void ImageBuffer::drawPattern(GraphicsContext* context, const FloatRect& srcRect |
| void ImageBuffer::platformTransformColorSpace(const Vector<int>& lookUpTable) |
| { |
| // FIXME: Disable color space conversions on accelerated canvases (for now). |
| - if (m_data.m_platformContext.isAccelerated()) |
| + if (context()->platformContext()->isAccelerated()) |
| return; |
| const SkBitmap& bitmap = *context()->platformContext()->bitmap(); |
| @@ -430,7 +430,6 @@ void ImageBufferData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) cons |
| { |
| MemoryClassInfo info(memoryObjectInfo, this); |
| info.addMember(m_canvas, "canvas"); |
| - info.addMember(m_platformContext, "platformContext"); |
| info.addMember(m_layerBridge, "layerBridge"); |
| } |