| Index: chrome/browser/renderer_host/accelerated_surface_container_manager_mac.h
|
| ===================================================================
|
| --- chrome/browser/renderer_host/accelerated_surface_container_manager_mac.h (revision 75488)
|
| +++ chrome/browser/renderer_host/accelerated_surface_container_manager_mac.h (working copy)
|
| @@ -6,120 +6,7 @@
|
| #define CHROME_BROWSER_RENDERER_HOST_GPU_PLUGIN_CONTAINER_MANAGER_MAC_H_
|
| #pragma once
|
|
|
| -#include <OpenGL/OpenGL.h>
|
| -#include <map>
|
| +// TODO(jam): remove this file when all files have been converted.
|
| +#include "content/browser/renderer_host/accelerated_surface_container_manager_mac.h"
|
|
|
| -#include "app/surface/transport_dib.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "ui/gfx/native_widget_types.h"
|
| -
|
| -namespace webkit {
|
| -namespace npapi {
|
| -struct WebPluginGeometry;
|
| -}
|
| -}
|
| -
|
| -class AcceleratedSurfaceContainerMac;
|
| -
|
| -// Helper class that manages the backing store and on-screen rendering
|
| -// of instances of the GPU plugin on the Mac.
|
| -class AcceleratedSurfaceContainerManagerMac {
|
| - public:
|
| - AcceleratedSurfaceContainerManagerMac();
|
| -
|
| - // Allocates a new "fake" PluginWindowHandle, which is used as the
|
| - // key for the other operations.
|
| - gfx::PluginWindowHandle AllocateFakePluginWindowHandle(bool opaque,
|
| - bool root);
|
| -
|
| - // Destroys a fake PluginWindowHandle and associated storage.
|
| - void DestroyFakePluginWindowHandle(gfx::PluginWindowHandle id);
|
| -
|
| - // Indicates whether the given PluginWindowHandle is "root", which
|
| - // means that we are using accelerated compositing and that this one
|
| - // contains the compositor's output.
|
| - bool IsRootContainer(gfx::PluginWindowHandle id) const;
|
| -
|
| - // Returns the handle of the compositor surface, or kNullPluginWindow if no
|
| - // compositor surface is active.
|
| - gfx::PluginWindowHandle root_container_handle() const {
|
| - return root_container_handle_;
|
| - }
|
| -
|
| - // Informs the manager if gpu rendering is active.
|
| - void set_gpu_rendering_active(bool active);
|
| -
|
| - // Sets the size and backing store of the plugin instance. There are two
|
| - // versions: the IOSurface version is used on systems where the IOSurface
|
| - // API is supported (Mac OS X 10.6 and later); the TransportDIB is used on
|
| - // Mac OS X 10.5 and earlier.
|
| - void SetSizeAndIOSurface(gfx::PluginWindowHandle id,
|
| - int32 width,
|
| - int32 height,
|
| - uint64 io_surface_identifier);
|
| - void SetSizeAndTransportDIB(gfx::PluginWindowHandle id,
|
| - int32 width,
|
| - int32 height,
|
| - TransportDIB::Handle transport_dib);
|
| -
|
| - // Takes an update from WebKit about a plugin's position and size and moves
|
| - // the plugin accordingly.
|
| - void SetPluginContainerGeometry(
|
| - const webkit::npapi::WebPluginGeometry& move);
|
| -
|
| - // Draws the plugin container associated with the given id into the given
|
| - // OpenGL context, which must already be current.
|
| - void Draw(CGLContextObj context, gfx::PluginWindowHandle id);
|
| -
|
| - // Causes the next Draw call on each container to trigger a texture upload.
|
| - // Should be called any time the drawing context has changed.
|
| - void ForceTextureReload();
|
| -
|
| - // Notifies a surface that it has been painted to.
|
| - void SetSurfaceWasPaintedTo(gfx::PluginWindowHandle id, uint64 surface_id);
|
| -
|
| - // Notifies the root container that its surface is invalid.
|
| - void SetRootSurfaceInvalid();
|
| -
|
| - // Returns if a given surface should be shown.
|
| - bool SurfaceShouldBeVisible(gfx::PluginWindowHandle id) const;
|
| - private:
|
| - uint32 current_id_;
|
| -
|
| - // Maps a "fake" plugin window handle to the corresponding container.
|
| - AcceleratedSurfaceContainerMac*
|
| - MapIDToContainer(gfx::PluginWindowHandle id) const;
|
| -
|
| - // A map that associates plugin window handles with their containers.
|
| - typedef std::map<gfx::PluginWindowHandle, AcceleratedSurfaceContainerMac*>
|
| - PluginWindowToContainerMap;
|
| - PluginWindowToContainerMap plugin_window_to_container_map_;
|
| -
|
| - // The "root" container, which is only used to draw the output of
|
| - // the accelerated compositor if it is active. Currently,
|
| - // accelerated plugins (Core Animation and Pepper 3D) are drawn on
|
| - // top of the page's contents rather than transformed and composited
|
| - // with the rest of the page. At some point we would like them to be
|
| - // treated uniformly with other page elements; when this is done,
|
| - // the separate treatment of the root container can go away because
|
| - // there will only be one container active when the accelerated
|
| - // compositor is active.
|
| - AcceleratedSurfaceContainerMac* root_container_;
|
| - gfx::PluginWindowHandle root_container_handle_;
|
| -
|
| - // True if gpu rendering is active. The root container is created on demand
|
| - // and destroyed only when a renderer process exits. When the compositor was
|
| - // created, this is set to |false| while the compositor is not needed.
|
| - bool gpu_rendering_active_;
|
| -
|
| - // Both |plugin_window_to_container_map_| and the
|
| - // AcceleratedSurfaceContainerMac in it are not threadsafe, but accessed from
|
| - // multiple threads. All these accesses are guarded by this lock.
|
| - mutable base::Lock lock_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AcceleratedSurfaceContainerManagerMac);
|
| -};
|
| -
|
| #endif // CHROME_BROWSER_RENDERER_HOST_GPU_PLUGIN_CONTAINER_MANAGER_MAC_H_
|
| -
|
|
|