| Index: content/browser/gpu/gpu_surface_tracker.cc
|
| diff --git a/content/browser/gpu/gpu_surface_tracker.cc b/content/browser/gpu/gpu_surface_tracker.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..280f48f9b6dba7418a8c2c7a1897f39c79d94e06
|
| --- /dev/null
|
| +++ b/content/browser/gpu/gpu_surface_tracker.cc
|
| @@ -0,0 +1,75 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "content/browser/gpu/gpu_surface_tracker.h"
|
| +
|
| +#include "base/logging.h"
|
| +
|
| +GpuSurfaceTracker::GpuSurfaceTracker()
|
| + : next_surface_id_(1) {
|
| +}
|
| +
|
| +GpuSurfaceTracker::~GpuSurfaceTracker() {
|
| +}
|
| +
|
| +GpuSurfaceTracker* GpuSurfaceTracker::GetInstance() {
|
| + return Singleton<GpuSurfaceTracker>::get();
|
| +}
|
| +
|
| +int GpuSurfaceTracker::AddSurfaceForRenderer(int renderer_id,
|
| + int render_widget_id) {
|
| + base::AutoLock lock(lock_);
|
| + SurfaceInfo info = { renderer_id, render_widget_id, gfx::kNullPluginWindow };
|
| + int surface_id = next_surface_id_++;
|
| + surface_map_[surface_id] = info;
|
| + return surface_id;
|
| +}
|
| +
|
| +int GpuSurfaceTracker::LookupSurfaceForRenderer(int renderer_id,
|
| + int render_widget_id) {
|
| + base::AutoLock lock(lock_);
|
| + for (SurfaceMap::iterator it = surface_map_.begin(); it != surface_map_.end();
|
| + ++it) {
|
| + const SurfaceInfo& info = it->second;
|
| + if (info.renderer_id == renderer_id &&
|
| + info.render_widget_id == render_widget_id) {
|
| + return it->first;
|
| + }
|
| + }
|
| + return 0;
|
| +}
|
| +
|
| +void GpuSurfaceTracker::RemoveSurface(int surface_id) {
|
| + base::AutoLock lock(lock_);
|
| + DCHECK(surface_map_.find(surface_id) != surface_map_.end());
|
| + surface_map_.erase(surface_id);
|
| +}
|
| +
|
| +bool GpuSurfaceTracker::GetRenderWidgetIDForSurface(int surface_id,
|
| + int* renderer_id,
|
| + int* render_widget_id) {
|
| + base::AutoLock lock(lock_);
|
| + SurfaceMap::iterator it = surface_map_.find(surface_id);
|
| + if (it == surface_map_.end())
|
| + return false;
|
| + const SurfaceInfo& info = it->second;
|
| + *renderer_id = info.renderer_id;
|
| + *render_widget_id = info.render_widget_id;
|
| + return true;
|
| +}
|
| +
|
| +void GpuSurfaceTracker::SetSurfaceHandle(int surface_id,
|
| + gfx::PluginWindowHandle handle) {
|
| + base::AutoLock lock(lock_);
|
| + DCHECK(surface_map_.find(surface_id) != surface_map_.end());
|
| + SurfaceInfo& info = surface_map_[surface_id];
|
| + info.handle = handle;
|
| +}
|
| +
|
| +gfx::PluginWindowHandle GpuSurfaceTracker::GetSurfaceHandle(int surface_id) {
|
| + base::AutoLock lock(lock_);
|
| + DCHECK(surface_map_.find(surface_id) != surface_map_.end());
|
| + return surface_map_[surface_id].handle;
|
| +}
|
| +
|
|
|