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

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

Issue 2644653003: Make OffscreenCanvas animation in sync with its placeholder canvas's parent frame rate (Closed)
Patch Set: rebase again 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_surface_manager.cc
diff --git a/content/browser/renderer_host/offscreen_canvas_surface_manager.cc b/content/browser/renderer_host/offscreen_canvas_surface_manager.cc
index 65ff06e0c83c3e60eaf4e6a0e92eb6a283f56809..1eb9373fdfa2fd837f66460e6fd6b9d3d10cdfa9 100644
--- a/content/browser/renderer_host/offscreen_canvas_surface_manager.cc
+++ b/content/browser/renderer_host/offscreen_canvas_surface_manager.cc
@@ -27,6 +27,30 @@ OffscreenCanvasSurfaceManager* OffscreenCanvasSurfaceManager::GetInstance() {
return g_manager.Pointer();
}
+void OffscreenCanvasSurfaceManager::RegisterFrameSinkToParent(
+ const cc::FrameSinkId& child_frame_sink_id) {
+ auto surface_iter = registered_surface_instances_.find(child_frame_sink_id);
+ if (surface_iter == registered_surface_instances_.end())
+ return;
+ OffscreenCanvasSurfaceImpl* surfaceImpl = surface_iter->second;
+ if (surfaceImpl->parent_frame_sink_id().is_valid()) {
+ GetSurfaceManager()->RegisterFrameSinkHierarchy(
+ surfaceImpl->parent_frame_sink_id(), child_frame_sink_id);
+ }
+}
+
+void OffscreenCanvasSurfaceManager::UnregisterFrameSinkFromParent(
+ const cc::FrameSinkId& child_frame_sink_id) {
+ auto surface_iter = registered_surface_instances_.find(child_frame_sink_id);
+ if (surface_iter == registered_surface_instances_.end())
+ return;
+ OffscreenCanvasSurfaceImpl* surfaceImpl = surface_iter->second;
+ if (surfaceImpl->parent_frame_sink_id().is_valid()) {
+ GetSurfaceManager()->UnregisterFrameSinkHierarchy(
+ surfaceImpl->parent_frame_sink_id(), child_frame_sink_id);
+ }
+}
+
void OffscreenCanvasSurfaceManager::OnSurfaceCreated(
const cc::SurfaceInfo& surface_info) {
auto surface_iter =
@@ -38,7 +62,7 @@ void OffscreenCanvasSurfaceManager::OnSurfaceCreated(
}
void OffscreenCanvasSurfaceManager::RegisterOffscreenCanvasSurfaceInstance(
- cc::FrameSinkId frame_sink_id,
+ const cc::FrameSinkId& frame_sink_id,
OffscreenCanvasSurfaceImpl* surface_instance) {
DCHECK(surface_instance);
DCHECK_EQ(registered_surface_instances_.count(frame_sink_id), 0u);
@@ -46,13 +70,13 @@ void OffscreenCanvasSurfaceManager::RegisterOffscreenCanvasSurfaceInstance(
}
void OffscreenCanvasSurfaceManager::UnregisterOffscreenCanvasSurfaceInstance(
- cc::FrameSinkId frame_sink_id) {
+ const cc::FrameSinkId& frame_sink_id) {
DCHECK_EQ(registered_surface_instances_.count(frame_sink_id), 1u);
registered_surface_instances_.erase(frame_sink_id);
}
OffscreenCanvasSurfaceImpl* OffscreenCanvasSurfaceManager::GetSurfaceInstance(
- cc::FrameSinkId frame_sink_id) {
+ const cc::FrameSinkId& frame_sink_id) {
auto search = registered_surface_instances_.find(frame_sink_id);
if (search != registered_surface_instances_.end()) {
return search->second;

Powered by Google App Engine
This is Rietveld 408576698