OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "content/browser/gpu/gpu_surface_tracker.h" |
| 6 |
| 7 #include "base/logging.h" |
| 8 |
| 9 GpuSurfaceTracker::GpuSurfaceTracker() |
| 10 : next_surface_id_(1) { |
| 11 } |
| 12 |
| 13 GpuSurfaceTracker::~GpuSurfaceTracker() { |
| 14 } |
| 15 |
| 16 GpuSurfaceTracker* GpuSurfaceTracker::GetInstance() { |
| 17 return Singleton<GpuSurfaceTracker>::get(); |
| 18 } |
| 19 |
| 20 int GpuSurfaceTracker::AddSurfaceForRenderer(int renderer_id, |
| 21 int render_widget_id) { |
| 22 base::AutoLock lock(lock_); |
| 23 SurfaceInfo info = { renderer_id, render_widget_id, gfx::kNullPluginWindow }; |
| 24 int surface_id = next_surface_id_++; |
| 25 surface_map_[surface_id] = info; |
| 26 return surface_id; |
| 27 } |
| 28 |
| 29 int GpuSurfaceTracker::LookupSurfaceForRenderer(int renderer_id, |
| 30 int render_widget_id) { |
| 31 base::AutoLock lock(lock_); |
| 32 for (SurfaceMap::iterator it = surface_map_.begin(); it != surface_map_.end(); |
| 33 ++it) { |
| 34 const SurfaceInfo& info = it->second; |
| 35 if (info.renderer_id == renderer_id && |
| 36 info.render_widget_id == render_widget_id) { |
| 37 return it->first; |
| 38 } |
| 39 } |
| 40 return 0; |
| 41 } |
| 42 |
| 43 void GpuSurfaceTracker::RemoveSurface(int surface_id) { |
| 44 base::AutoLock lock(lock_); |
| 45 DCHECK(surface_map_.find(surface_id) != surface_map_.end()); |
| 46 surface_map_.erase(surface_id); |
| 47 } |
| 48 |
| 49 bool GpuSurfaceTracker::GetRenderWidgetIDForSurface(int surface_id, |
| 50 int* renderer_id, |
| 51 int* render_widget_id) { |
| 52 base::AutoLock lock(lock_); |
| 53 SurfaceMap::iterator it = surface_map_.find(surface_id); |
| 54 if (it == surface_map_.end()) |
| 55 return false; |
| 56 const SurfaceInfo& info = it->second; |
| 57 *renderer_id = info.renderer_id; |
| 58 *render_widget_id = info.render_widget_id; |
| 59 return true; |
| 60 } |
| 61 |
| 62 void GpuSurfaceTracker::SetSurfaceHandle(int surface_id, |
| 63 gfx::PluginWindowHandle handle) { |
| 64 base::AutoLock lock(lock_); |
| 65 DCHECK(surface_map_.find(surface_id) != surface_map_.end()); |
| 66 SurfaceInfo& info = surface_map_[surface_id]; |
| 67 info.handle = handle; |
| 68 } |
| 69 |
| 70 gfx::PluginWindowHandle GpuSurfaceTracker::GetSurfaceHandle(int surface_id) { |
| 71 base::AutoLock lock(lock_); |
| 72 DCHECK(surface_map_.find(surface_id) != surface_map_.end()); |
| 73 return surface_map_[surface_id].handle; |
| 74 } |
| 75 |
OLD | NEW |