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

Unified Diff: content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc

Issue 2614493003: Manage OffscreenCanvasCompositorFrameSink lifetime explicitly (Closed)
Patch Set: Rebased Created 3 years, 11 months 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: content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
diff --git a/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc b/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
index 682aecd62dbdfdaf4f7d45a65cae2bf828a13453..5717d03773b2bb1f13af95819701a97a1cee8a5e 100644
--- a/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
+++ b/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
@@ -7,30 +7,28 @@
#include "base/memory/ptr_util.h"
#include "cc/surfaces/surface.h"
#include "cc/surfaces/surface_manager.h"
+#include "content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_provider_impl.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
namespace content {
-// static
-void OffscreenCanvasCompositorFrameSink::Create(
- const cc::FrameSinkId& frame_sink_id,
- cc::SurfaceManager* surface_manager,
- cc::mojom::MojoCompositorFrameSinkClientPtr client,
- cc::mojom::MojoCompositorFrameSinkRequest request) {
- std::unique_ptr<OffscreenCanvasCompositorFrameSink> impl =
- base::MakeUnique<OffscreenCanvasCompositorFrameSink>(
- frame_sink_id, surface_manager, std::move(client));
- OffscreenCanvasCompositorFrameSink* compositor_frame_sink = impl.get();
- compositor_frame_sink->binding_ =
- mojo::MakeStrongBinding(std::move(impl), std::move(request));
-}
-
OffscreenCanvasCompositorFrameSink::OffscreenCanvasCompositorFrameSink(
+ OffscreenCanvasCompositorFrameSinkProviderImpl* provider,
const cc::FrameSinkId& frame_sink_id,
- cc::SurfaceManager* surface_manager,
+ cc::mojom::MojoCompositorFrameSinkRequest request,
cc::mojom::MojoCompositorFrameSinkClientPtr client)
- : support_(this, surface_manager, frame_sink_id, nullptr, nullptr),
- client_(std::move(client)) {}
+ : provider_(provider),
+ support_(this,
+ provider->GetSurfaceManager(),
+ frame_sink_id,
+ nullptr,
+ nullptr),
+ client_(std::move(client)),
+ binding_(this, std::move(request)) {
+ binding_.set_connection_error_handler(
+ base::Bind(&OffscreenCanvasCompositorFrameSink::OnClientConnectionLost,
+ base::Unretained(this)));
+}
OffscreenCanvasCompositorFrameSink::~OffscreenCanvasCompositorFrameSink() {}
@@ -94,4 +92,9 @@ void OffscreenCanvasCompositorFrameSink::WillDrawSurface() {
client_->WillDrawSurface();
}
+void OffscreenCanvasCompositorFrameSink::OnClientConnectionLost() {
+ provider_->OnCompositorFrameSinkClientConnectionLost(
+ support_.frame_sink_id());
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698