Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Unified Diff: third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp

Issue 2521013003: Compositing Layer update for OffscreenCanvas resize (Closed)
Patch Set: test Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..e84f08bc78d18c0a206cc554b60e39713a552f5d 100644
--- a/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
+++ b/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
@@ -19,29 +19,20 @@ namespace blink {
CanvasSurfaceLayerBridge::CanvasSurfaceLayerBridge(
mojom::blink::OffscreenCanvasSurfacePtr service)
- : m_service(std::move(service)) {}
+ : m_service(std::move(service)), m_binding(this) {}
CanvasSurfaceLayerBridge::~CanvasSurfaceLayerBridge() {}
bool CanvasSurfaceLayerBridge::createSurfaceLayer(int canvasWidth,
int canvasHeight) {
- if (!m_service->GetSurfaceId(&m_surfaceId))
+ if (!m_service->GetSurfaceId(m_binding.CreateInterfacePtrAndBind(),
+ &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));
-
+ createNewSurfaceLayer(m_surfaceId, gfx::Size(canvasWidth, canvasHeight));
m_webLayer = Platform::current()->compositorSupport()->createLayerFromCCLayer(
m_surfaceLayer.get());
GraphicsLayer::registerContentsLayer(m_webLayer.get());
+
return true;
}
@@ -56,4 +47,32 @@ void CanvasSurfaceLayerBridge::requireCallback(
m_service->Require(surfaceId, sequence);
}
+void CanvasSurfaceLayerBridge::OnSurfaceSizeChanged(
+ const cc::SurfaceId& newSurfaceId,
+ uint32_t newWidth,
+ uint32_t newHeight) {
+ if (m_surfaceLayer && m_surfaceLayer->surface_id() != newSurfaceId) {
+ GraphicsLayer::unregisterContentsLayer(m_webLayer.get());
+ createNewSurfaceLayer(newSurfaceId, gfx::Size(newWidth, newHeight));
+ m_webLayer =
+ Platform::current()->compositorSupport()->createLayerFromCCLayer(
+ m_surfaceLayer.get());
+ GraphicsLayer::registerContentsLayer(m_webLayer.get());
+ }
+}
+
+void CanvasSurfaceLayerBridge::createNewSurfaceLayer(
+ const cc::SurfaceId& surfaceId,
+ gfx::Size size) {
+ 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, size);
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698