| Index: third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp b/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| index 4355caed2a27dd712a886705e5bd9e97539d3cf5..b9f836dfb71b22f87068ea159cd373f90fe40804 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
|
| @@ -5,7 +5,9 @@
|
| #include "platform/graphics/CanvasSurfaceLayerBridge.h"
|
|
|
| #include "cc/layers/surface_layer.h"
|
| +#include "cc/surfaces/sequence_surface_reference_factory.h"
|
| #include "cc/surfaces/surface_id.h"
|
| +#include "cc/surfaces/surface_info.h"
|
| #include "cc/surfaces/surface_sequence.h"
|
| #include "platform/graphics/GraphicsLayer.h"
|
| #include "platform/mojo/MojoHelper.h"
|
| @@ -17,6 +19,31 @@
|
|
|
| namespace blink {
|
|
|
| +namespace {
|
| +
|
| +class OffscreenCanvasSurfaceReferenceFactory
|
| + : public cc::SequenceSurfaceReferenceFactory {
|
| + public:
|
| + OffscreenCanvasSurfaceReferenceFactory(
|
| + const mojom::blink::OffscreenCanvasSurfacePtr& m_service)
|
| + : m_service(m_service) {}
|
| + void RequireSequence(const cc::SurfaceId& id,
|
| + const cc::SurfaceSequence& seq) const override {
|
| + m_service->Require(id, seq);
|
| + }
|
| + void SatisfySequence(const cc::SurfaceSequence& seq) const override {
|
| + m_service->Satisfy(seq);
|
| + }
|
| +
|
| + protected:
|
| + ~OffscreenCanvasSurfaceReferenceFactory() override = default;
|
| +
|
| + private:
|
| + const mojom::blink::OffscreenCanvasSurfacePtr& m_service;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| CanvasSurfaceLayerBridge::CanvasSurfaceLayerBridge(
|
| mojom::blink::OffscreenCanvasSurfacePtr service)
|
| : m_service(std::move(service)) {}
|
| @@ -28,16 +55,10 @@ bool CanvasSurfaceLayerBridge::createSurfaceLayer(int canvasWidth,
|
| if (!m_service->GetSurfaceId(&m_surfaceId))
|
| return false;
|
|
|
| - cc::SurfaceLayer::SatisfyCallback satisfyCallback =
|
| - convertToBaseCallback(WTF::bind(
|
| - &CanvasSurfaceLayerBridge::satisfyCallback, WTF::unretained(this)));
|
| - cc::SurfaceLayer::RequireCallback requireCallback =
|
| - convertToBaseCallback(WTF::bind(
|
| - &CanvasSurfaceLayerBridge::requireCallback, WTF::unretained(this)));
|
| - m_surfaceLayer = cc::SurfaceLayer::Create(std::move(satisfyCallback),
|
| - std::move(requireCallback));
|
| - m_surfaceLayer->SetSurfaceId(m_surfaceId, 1.f,
|
| - gfx::Size(canvasWidth, canvasHeight));
|
| + m_surfaceLayer = cc::SurfaceLayer::Create(
|
| + new OffscreenCanvasSurfaceReferenceFactory(m_service));
|
| + cc::SurfaceInfo info(m_surfaceId, 1.f, gfx::Size(canvasWidth, canvasHeight));
|
| + m_surfaceLayer->SetSurfaceInfo(info);
|
|
|
| m_webLayer = Platform::current()->compositorSupport()->createLayerFromCCLayer(
|
| m_surfaceLayer.get());
|
| @@ -45,15 +66,4 @@ bool CanvasSurfaceLayerBridge::createSurfaceLayer(int canvasWidth,
|
| return true;
|
| }
|
|
|
| -void CanvasSurfaceLayerBridge::satisfyCallback(
|
| - const cc::SurfaceSequence& sequence) {
|
| - m_service->Satisfy(sequence);
|
| -}
|
| -
|
| -void CanvasSurfaceLayerBridge::requireCallback(
|
| - const cc::SurfaceId& surfaceId,
|
| - const cc::SurfaceSequence& sequence) {
|
| - m_service->Require(surfaceId, sequence);
|
| -}
|
| -
|
| } // namespace blink
|
|
|