| Index: third_party/WebKit/Source/platform/graphics/Canvas2DImageBufferSurface.h
|
| diff --git a/third_party/WebKit/Source/platform/graphics/Canvas2DImageBufferSurface.h b/third_party/WebKit/Source/platform/graphics/Canvas2DImageBufferSurface.h
|
| index f95a07d355333b6aefb4f5963c3a98c28efdf9fb..7785f3b013bd72ada2cc7b2c63dd1ded89afbdd5 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/Canvas2DImageBufferSurface.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/Canvas2DImageBufferSurface.h
|
| @@ -39,9 +39,9 @@ namespace blink {
|
| // This shim necessary because ImageBufferSurfaces are not allowed to be RefCounted
|
| class Canvas2DImageBufferSurface final : public ImageBufferSurface {
|
| public:
|
| - Canvas2DImageBufferSurface(const IntSize& size, int msaaSampleCount, OpacityMode opacityMode, Canvas2DLayerBridge::AccelerationMode accelerationMode)
|
| + Canvas2DImageBufferSurface(std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, const IntSize& size, int msaaSampleCount, OpacityMode opacityMode, Canvas2DLayerBridge::AccelerationMode accelerationMode)
|
| : ImageBufferSurface(size, opacityMode)
|
| - , m_layerBridge(Canvas2DLayerBridge::create(size, msaaSampleCount, opacityMode, accelerationMode))
|
| + , m_layerBridge(adoptRef(new Canvas2DLayerBridge(std::move(contextProvider), size, msaaSampleCount, opacityMode, accelerationMode)))
|
| {
|
| init();
|
| }
|
| @@ -53,17 +53,9 @@ public:
|
| init();
|
| }
|
|
|
| - void init()
|
| - {
|
| - clear();
|
| - if (isValid())
|
| - m_layerBridge->flush();
|
| - }
|
| -
|
| ~Canvas2DImageBufferSurface() override
|
| {
|
| - if (m_layerBridge)
|
| - m_layerBridge->beginDestruction();
|
| + m_layerBridge->beginDestruction();
|
| }
|
|
|
| // ImageBufferSurface implementation
|
| @@ -71,7 +63,7 @@ public:
|
| void willOverwriteCanvas() override { m_layerBridge->willOverwriteCanvas(); }
|
| SkCanvas* canvas() override { return m_layerBridge->canvas(); }
|
| void disableDeferral(DisableDeferralReason reason) override { m_layerBridge->disableDeferral(reason); }
|
| - bool isValid() const override { return m_layerBridge && m_layerBridge->checkSurfaceValid(); }
|
| + bool isValid() const override { return m_layerBridge->checkSurfaceValid(); }
|
| bool restore() override { return m_layerBridge->restoreSurface(); }
|
| WebLayer* layer() const override { return m_layerBridge->layer(); }
|
| bool isAccelerated() const override { return m_layerBridge->isAccelerated(); }
|
| @@ -85,7 +77,15 @@ public:
|
| bool writePixels(const SkImageInfo& origInfo, const void* pixels, size_t rowBytes, int x, int y) override { return m_layerBridge->writePixels(origInfo, pixels, rowBytes, x, y); }
|
|
|
| PassRefPtr<SkImage> newImageSnapshot(AccelerationHint hint, SnapshotReason reason) override { return m_layerBridge->newImageSnapshot(hint, reason); }
|
| +
|
| private:
|
| + void init()
|
| + {
|
| + clear();
|
| + if (isValid())
|
| + m_layerBridge->flush();
|
| + }
|
| +
|
| RefPtr<Canvas2DLayerBridge> m_layerBridge;
|
| };
|
|
|
|
|