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

Side by Side Diff: content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_manager.cc

Issue 2789753002: Convert offscreen canvas to use FrameSinkManagerHost. (Closed)
Patch Set: Rebase. Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_m anager.h" 5 #include "content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_m anager.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "cc/surfaces/surface_manager.h" 8 #include "cc/surfaces/surface_manager.h"
9 #include "content/browser/compositor/surface_utils.h" 9 #include "content/browser/compositor/surface_utils.h"
10 10
(...skipping 13 matching lines...) Expand all
24 ~OffscreenCanvasCompositorFrameSinkManager() { 24 ~OffscreenCanvasCompositorFrameSinkManager() {
25 registered_surface_instances_.clear(); 25 registered_surface_instances_.clear();
26 GetSurfaceManager()->RemoveObserver(this); 26 GetSurfaceManager()->RemoveObserver(this);
27 } 27 }
28 28
29 OffscreenCanvasCompositorFrameSinkManager* 29 OffscreenCanvasCompositorFrameSinkManager*
30 OffscreenCanvasCompositorFrameSinkManager::GetInstance() { 30 OffscreenCanvasCompositorFrameSinkManager::GetInstance() {
31 return g_manager.Pointer(); 31 return g_manager.Pointer();
32 } 32 }
33 33
34 void OffscreenCanvasCompositorFrameSinkManager::RegisterFrameSinkToParent(
35 const cc::FrameSinkId& child_frame_sink_id) {
36 auto surface_iter = registered_surface_instances_.find(child_frame_sink_id);
37 if (surface_iter == registered_surface_instances_.end())
38 return;
39 OffscreenCanvasSurfaceImpl* surfaceImpl = surface_iter->second;
40 if (surfaceImpl->parent_frame_sink_id().is_valid()) {
41 GetSurfaceManager()->RegisterFrameSinkHierarchy(
42 surfaceImpl->parent_frame_sink_id(), child_frame_sink_id);
43 }
44 }
45
46 void OffscreenCanvasCompositorFrameSinkManager::UnregisterFrameSinkFromParent(
47 const cc::FrameSinkId& child_frame_sink_id) {
48 auto surface_iter = registered_surface_instances_.find(child_frame_sink_id);
49 if (surface_iter == registered_surface_instances_.end())
50 return;
51 OffscreenCanvasSurfaceImpl* surfaceImpl = surface_iter->second;
52 if (surfaceImpl->parent_frame_sink_id().is_valid()) {
53 GetSurfaceManager()->UnregisterFrameSinkHierarchy(
54 surfaceImpl->parent_frame_sink_id(), child_frame_sink_id);
55 }
56 }
57
58 void OffscreenCanvasCompositorFrameSinkManager::OnSurfaceCreated( 34 void OffscreenCanvasCompositorFrameSinkManager::OnSurfaceCreated(
59 const cc::SurfaceInfo& surface_info) { 35 const cc::SurfaceInfo& surface_info) {
60 auto surface_iter = 36 auto surface_iter =
61 registered_surface_instances_.find(surface_info.id().frame_sink_id()); 37 registered_surface_instances_.find(surface_info.id().frame_sink_id());
62 if (surface_iter == registered_surface_instances_.end()) 38 if (surface_iter == registered_surface_instances_.end())
63 return; 39 return;
64 OffscreenCanvasSurfaceImpl* surfaceImpl = surface_iter->second; 40 OffscreenCanvasSurfaceImpl* surface_impl = surface_iter->second;
65 surfaceImpl->OnSurfaceCreated(surface_info); 41 surface_impl->OnSurfaceCreated(surface_info);
66 } 42 }
67 43
68 void OffscreenCanvasCompositorFrameSinkManager:: 44 void OffscreenCanvasCompositorFrameSinkManager::
69 RegisterOffscreenCanvasSurfaceInstance( 45 RegisterOffscreenCanvasSurfaceInstance(
70 const cc::FrameSinkId& frame_sink_id, 46 const cc::FrameSinkId& frame_sink_id,
71 OffscreenCanvasSurfaceImpl* surface_instance) { 47 OffscreenCanvasSurfaceImpl* surface_instance) {
72 DCHECK(surface_instance); 48 DCHECK(surface_instance);
73 DCHECK_EQ(registered_surface_instances_.count(frame_sink_id), 0u); 49 DCHECK_EQ(registered_surface_instances_.count(frame_sink_id), 0u);
74 registered_surface_instances_[frame_sink_id] = surface_instance; 50 registered_surface_instances_[frame_sink_id] = surface_instance;
75 } 51 }
76 52
77 void OffscreenCanvasCompositorFrameSinkManager:: 53 void OffscreenCanvasCompositorFrameSinkManager::
78 UnregisterOffscreenCanvasSurfaceInstance( 54 UnregisterOffscreenCanvasSurfaceInstance(
79 const cc::FrameSinkId& frame_sink_id) { 55 const cc::FrameSinkId& frame_sink_id) {
80 DCHECK_EQ(registered_surface_instances_.count(frame_sink_id), 1u); 56 DCHECK_EQ(registered_surface_instances_.count(frame_sink_id), 1u);
81 registered_surface_instances_.erase(frame_sink_id); 57 registered_surface_instances_.erase(frame_sink_id);
82 } 58 }
83 59
84 OffscreenCanvasSurfaceImpl* 60 OffscreenCanvasSurfaceImpl*
85 OffscreenCanvasCompositorFrameSinkManager::GetSurfaceInstance( 61 OffscreenCanvasCompositorFrameSinkManager::GetSurfaceInstance(
86 const cc::FrameSinkId& frame_sink_id) { 62 const cc::FrameSinkId& frame_sink_id) {
87 auto search = registered_surface_instances_.find(frame_sink_id); 63 auto search = registered_surface_instances_.find(frame_sink_id);
88 if (search != registered_surface_instances_.end()) { 64 if (search != registered_surface_instances_.end()) {
89 return search->second; 65 return search->second;
90 } 66 }
91 return nullptr; 67 return nullptr;
92 } 68 }
93 69
94 } // namespace content 70 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698