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

Side by Side Diff: content/browser/gpu/gpu_surface_tracker.cc

Issue 1365563002: Make channel preemption not require view contexts for hookup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wakeup_gpu
Patch Set: rebase Created 5 years, 3 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/gpu/gpu_surface_tracker.h" 5 #include "content/browser/gpu/gpu_surface_tracker.h"
6 6
7 #if defined(OS_ANDROID) 7 #if defined(OS_ANDROID)
8 #include <android/native_window_jni.h> 8 #include <android/native_window_jni.h>
9 #endif // defined(OS_ANDROID) 9 #endif // defined(OS_ANDROID)
10 10
(...skipping 13 matching lines...) Expand all
24 GpuSurfaceTracker* GpuSurfaceTracker::GetInstance() { 24 GpuSurfaceTracker* GpuSurfaceTracker::GetInstance() {
25 return base::Singleton<GpuSurfaceTracker>::get(); 25 return base::Singleton<GpuSurfaceTracker>::get();
26 } 26 }
27 27
28 int GpuSurfaceTracker::AddSurfaceForRenderer(int renderer_id, 28 int GpuSurfaceTracker::AddSurfaceForRenderer(int renderer_id,
29 int render_widget_id) { 29 int render_widget_id) {
30 base::AutoLock lock(lock_); 30 base::AutoLock lock(lock_);
31 int surface_id = next_surface_id_++; 31 int surface_id = next_surface_id_++;
32 surface_map_[surface_id] = 32 surface_map_[surface_id] =
33 SurfaceInfo(renderer_id, render_widget_id, gfx::kNullAcceleratedWidget, 33 SurfaceInfo(renderer_id, render_widget_id, gfx::kNullAcceleratedWidget,
34 gfx::GLSurfaceHandle(), NULL); 34 gfx::GLSurfaceHandle());
35 return surface_id; 35 return surface_id;
36 } 36 }
37 37
38 int GpuSurfaceTracker::LookupSurfaceForRenderer(int renderer_id, 38 int GpuSurfaceTracker::LookupSurfaceForRenderer(int renderer_id,
39 int render_widget_id) { 39 int render_widget_id) {
40 base::AutoLock lock(lock_); 40 base::AutoLock lock(lock_);
41 for (SurfaceMap::iterator it = surface_map_.begin(); it != surface_map_.end(); 41 for (SurfaceMap::iterator it = surface_map_.begin(); it != surface_map_.end();
42 ++it) { 42 ++it) {
43 const SurfaceInfo& info = it->second; 43 const SurfaceInfo& info = it->second;
44 if (info.renderer_id == renderer_id && 44 if (info.renderer_id == renderer_id &&
45 info.render_widget_id == render_widget_id) { 45 info.render_widget_id == render_widget_id) {
46 return it->first; 46 return it->first;
47 } 47 }
48 } 48 }
49 return 0; 49 return 0;
50 } 50 }
51 51
52 int GpuSurfaceTracker::AddSurfaceForNativeWidget( 52 int GpuSurfaceTracker::AddSurfaceForNativeWidget(
53 gfx::AcceleratedWidget widget) { 53 gfx::AcceleratedWidget widget) {
54 base::AutoLock lock(lock_); 54 base::AutoLock lock(lock_);
55 int surface_id = next_surface_id_++; 55 int surface_id = next_surface_id_++;
56 surface_map_[surface_id] = 56 surface_map_[surface_id] = SurfaceInfo(0, 0, widget, gfx::GLSurfaceHandle());
57 SurfaceInfo(0, 0, widget, gfx::GLSurfaceHandle(), NULL);
58 return surface_id; 57 return surface_id;
59 } 58 }
60 59
61 void GpuSurfaceTracker::RemoveSurface(int surface_id) { 60 void GpuSurfaceTracker::RemoveSurface(int surface_id) {
62 base::AutoLock lock(lock_); 61 base::AutoLock lock(lock_);
63 DCHECK(surface_map_.find(surface_id) != surface_map_.end()); 62 DCHECK(surface_map_.find(surface_id) != surface_map_.end());
64 surface_map_.erase(surface_id); 63 surface_map_.erase(surface_id);
65 } 64 }
66 65
67 bool GpuSurfaceTracker::GetRenderWidgetIDForSurface(int surface_id,
68 int* renderer_id,
69 int* render_widget_id) {
70 base::AutoLock lock(lock_);
71 SurfaceMap::iterator it = surface_map_.find(surface_id);
72 if (it == surface_map_.end())
73 return false;
74 const SurfaceInfo& info = it->second;
75 if (!info.handle.is_transport())
76 return false;
77 *renderer_id = info.renderer_id;
78 *render_widget_id = info.render_widget_id;
79 return true;
80 }
81
82 void GpuSurfaceTracker::SetSurfaceHandle(int surface_id, 66 void GpuSurfaceTracker::SetSurfaceHandle(int surface_id,
83 const gfx::GLSurfaceHandle& handle) { 67 const gfx::GLSurfaceHandle& handle) {
84 base::AutoLock lock(lock_); 68 base::AutoLock lock(lock_);
85 DCHECK(surface_map_.find(surface_id) != surface_map_.end()); 69 DCHECK(surface_map_.find(surface_id) != surface_map_.end());
86 SurfaceInfo& info = surface_map_[surface_id]; 70 SurfaceInfo& info = surface_map_[surface_id];
87 info.handle = handle; 71 info.handle = handle;
88 } 72 }
89 73
90 gfx::GLSurfaceHandle GpuSurfaceTracker::GetSurfaceHandle(int surface_id) { 74 gfx::GLSurfaceHandle GpuSurfaceTracker::GetSurfaceHandle(int surface_id) {
91 base::AutoLock lock(lock_); 75 base::AutoLock lock(lock_);
(...skipping 10 matching lines...) Expand all
102 return gfx::kNullAcceleratedWidget; 86 return gfx::kNullAcceleratedWidget;
103 87
104 #if defined(OS_ANDROID) 88 #if defined(OS_ANDROID)
105 if (it->second.native_widget != gfx::kNullAcceleratedWidget) 89 if (it->second.native_widget != gfx::kNullAcceleratedWidget)
106 ANativeWindow_acquire(it->second.native_widget); 90 ANativeWindow_acquire(it->second.native_widget);
107 #endif // defined(OS_ANDROID) 91 #endif // defined(OS_ANDROID)
108 92
109 return it->second.native_widget; 93 return it->second.native_widget;
110 } 94 }
111 95
112 void GpuSurfaceTracker::SetNativeWidget(
113 int surface_id, gfx::AcceleratedWidget widget,
114 SurfaceRef* surface_ref) {
115 base::AutoLock lock(lock_);
116 SurfaceMap::iterator it = surface_map_.find(surface_id);
117 DCHECK(it != surface_map_.end());
118 SurfaceInfo& info = it->second;
119 info.native_widget = widget;
120 info.surface_ref = surface_ref;
121 }
122
123 std::size_t GpuSurfaceTracker::GetSurfaceCount() { 96 std::size_t GpuSurfaceTracker::GetSurfaceCount() {
124 base::AutoLock lock(lock_); 97 base::AutoLock lock(lock_);
125 return surface_map_.size(); 98 return surface_map_.size();
126 } 99 }
127 100
128 GpuSurfaceTracker::SurfaceInfo::SurfaceInfo() 101 GpuSurfaceTracker::SurfaceInfo::SurfaceInfo()
129 : renderer_id(0), 102 : renderer_id(0),
130 render_widget_id(0), 103 render_widget_id(0),
131 native_widget(gfx::kNullAcceleratedWidget) { } 104 native_widget(gfx::kNullAcceleratedWidget) { }
132 105
133 GpuSurfaceTracker::SurfaceInfo::SurfaceInfo( 106 GpuSurfaceTracker::SurfaceInfo::SurfaceInfo(
134 int renderer_id, 107 int renderer_id,
135 int render_widget_id, 108 int render_widget_id,
136 const gfx::AcceleratedWidget& native_widget, 109 const gfx::AcceleratedWidget& native_widget,
137 const gfx::GLSurfaceHandle& handle, 110 const gfx::GLSurfaceHandle& handle)
138 const scoped_refptr<SurfaceRef>& surface_ref)
139 : renderer_id(renderer_id), 111 : renderer_id(renderer_id),
140 render_widget_id(render_widget_id), 112 render_widget_id(render_widget_id),
141 native_widget(native_widget), 113 native_widget(native_widget),
142 handle(handle), 114 handle(handle) {}
143 surface_ref(surface_ref) { }
144 115
145 GpuSurfaceTracker::SurfaceInfo::~SurfaceInfo() { } 116 GpuSurfaceTracker::SurfaceInfo::~SurfaceInfo() { }
146 117
147 118
148 } // namespace content 119 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_surface_tracker.h ('k') | content/browser/renderer_host/compositor_impl_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698