Index: chrome/browser/renderer_host/accelerated_surface_container_manager_mac.cc |
=================================================================== |
--- chrome/browser/renderer_host/accelerated_surface_container_manager_mac.cc (revision 75488) |
+++ chrome/browser/renderer_host/accelerated_surface_container_manager_mac.cc (working copy) |
@@ -1,173 +0,0 @@ |
-// Copyright (c) 2010 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 "chrome/browser/renderer_host/accelerated_surface_container_manager_mac.h" |
- |
-#include "base/logging.h" |
-#include "chrome/browser/renderer_host/accelerated_surface_container_mac.h" |
-#include "webkit/plugins/npapi/webplugin.h" |
- |
-AcceleratedSurfaceContainerManagerMac::AcceleratedSurfaceContainerManagerMac() |
- : current_id_(0), |
- root_container_(NULL), |
- root_container_handle_(gfx::kNullPluginWindow), |
- gpu_rendering_active_(false) { |
-} |
- |
-gfx::PluginWindowHandle |
-AcceleratedSurfaceContainerManagerMac::AllocateFakePluginWindowHandle( |
- bool opaque, bool root) { |
- base::AutoLock lock(lock_); |
- |
- AcceleratedSurfaceContainerMac* container = |
- new AcceleratedSurfaceContainerMac(this, opaque); |
- gfx::PluginWindowHandle res = |
- static_cast<gfx::PluginWindowHandle>(++current_id_); |
- plugin_window_to_container_map_.insert(std::make_pair(res, container)); |
- if (root) { |
- root_container_ = container; |
- root_container_handle_ = res; |
- } |
- return res; |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::DestroyFakePluginWindowHandle( |
- gfx::PluginWindowHandle id) { |
- base::AutoLock lock(lock_); |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(id); |
- if (container) { |
- if (container == root_container_) { |
- root_container_ = NULL; |
- root_container_handle_ = gfx::kNullPluginWindow; |
- } |
- delete container; |
- } |
- plugin_window_to_container_map_.erase(id); |
-} |
- |
-bool AcceleratedSurfaceContainerManagerMac::IsRootContainer( |
- gfx::PluginWindowHandle id) const { |
- return root_container_handle_ != gfx::kNullPluginWindow && |
- root_container_handle_ == id; |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac:: |
- set_gpu_rendering_active(bool active) { |
- if (gpu_rendering_active_ && !active) |
- SetRootSurfaceInvalid(); |
- gpu_rendering_active_ = active; |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::SetSizeAndIOSurface( |
- gfx::PluginWindowHandle id, |
- int32 width, |
- int32 height, |
- uint64 io_surface_identifier) { |
- base::AutoLock lock(lock_); |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(id); |
- if (container) { |
- container->SetSizeAndIOSurface(width, height, io_surface_identifier); |
- } |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::SetSizeAndTransportDIB( |
- gfx::PluginWindowHandle id, |
- int32 width, |
- int32 height, |
- TransportDIB::Handle transport_dib) { |
- base::AutoLock lock(lock_); |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(id); |
- if (container) |
- container->SetSizeAndTransportDIB(width, height, transport_dib); |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::SetPluginContainerGeometry( |
- const webkit::npapi::WebPluginGeometry& move) { |
- base::AutoLock lock(lock_); |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(move.window); |
- if (container) |
- container->SetGeometry(move); |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::Draw(CGLContextObj context, |
- gfx::PluginWindowHandle id) { |
- base::AutoLock lock(lock_); |
- |
- glColorMask(true, true, true, true); |
- // Should match the clear color of RenderWidgetHostViewMac. |
- glClearColor(1.0f, 1.0f, 1.0f, 1.0f); |
- // TODO(thakis): Clearing the whole color buffer is wasteful, since most of |
- // it is overwritten by the surface. |
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
- glDisable(GL_DEPTH_TEST); |
- glDisable(GL_BLEND); |
- |
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(id); |
- CHECK(container); |
- container->Draw(context); |
- |
- // Unbind any texture from the texture target to ensure that the |
- // next time through we will have to re-bind the texture and thereby |
- // pick up modifications from the other process. |
- GLenum target = GL_TEXTURE_RECTANGLE_ARB; |
- glBindTexture(target, 0); |
- |
- glFlush(); |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::ForceTextureReload() { |
- base::AutoLock lock(lock_); |
- |
- for (PluginWindowToContainerMap::const_iterator i = |
- plugin_window_to_container_map_.begin(); |
- i != plugin_window_to_container_map_.end(); ++i) { |
- AcceleratedSurfaceContainerMac* container = i->second; |
- container->ForceTextureReload(); |
- } |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::SetSurfaceWasPaintedTo( |
- gfx::PluginWindowHandle id, uint64 surface_id) { |
- base::AutoLock lock(lock_); |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(id); |
- if (container) |
- container->set_was_painted_to(surface_id); |
-} |
- |
-void AcceleratedSurfaceContainerManagerMac::SetRootSurfaceInvalid() { |
- base::AutoLock lock(lock_); |
- if (root_container_) |
- root_container_->set_surface_invalid(); |
-} |
- |
-bool AcceleratedSurfaceContainerManagerMac::SurfaceShouldBeVisible( |
- gfx::PluginWindowHandle id) const { |
- base::AutoLock lock(lock_); |
- |
- if (IsRootContainer(id) && !gpu_rendering_active_) |
- return false; |
- |
- AcceleratedSurfaceContainerMac* container = MapIDToContainer(id); |
- return container && container->ShouldBeVisible(); |
-} |
- |
-AcceleratedSurfaceContainerMac* |
- AcceleratedSurfaceContainerManagerMac::MapIDToContainer( |
- gfx::PluginWindowHandle id) const { |
- PluginWindowToContainerMap::const_iterator i = |
- plugin_window_to_container_map_.find(id); |
- if (i != plugin_window_to_container_map_.end()) |
- return i->second; |
- |
- LOG(ERROR) << "Request for plugin container for unknown window id " << id; |
- |
- return NULL; |
-} |