| Index: chrome/browser/renderer_host/accelerated_surface_container_mac.h
|
| ===================================================================
|
| --- chrome/browser/renderer_host/accelerated_surface_container_mac.h (revision 75488)
|
| +++ chrome/browser/renderer_host/accelerated_surface_container_mac.h (working copy)
|
| @@ -6,148 +6,7 @@
|
| #define CHROME_BROWSER_RENDERER_HOST_GPU_PLUGIN_CONTAINER_MAC_H_
|
| #pragma once
|
|
|
| -// The "GPU plugin" is currently implemented as a special kind of
|
| -// NPAPI plugin to provide high-performance on-screen 3D rendering for
|
| -// Pepper 3D.
|
| -//
|
| -// On Windows and X11 platforms the GPU plugin relies on cross-process
|
| -// parenting of windows, which is not supported via any public APIs in
|
| -// the Mac OS X window system.
|
| -//
|
| -// To achieve full hardware acceleration we use the new IOSurface APIs
|
| -// introduced in Mac OS X 10.6. The GPU plugin's process produces an
|
| -// IOSurface and renders into it using OpenGL. It uses the
|
| -// IOSurfaceGetID and IOSurfaceLookup APIs to pass a reference to this
|
| -// surface to the browser process for on-screen rendering. The GPU
|
| -// plugin essentially looks like a windowless plugin; the browser
|
| -// process gets all of the mouse events, because the plugin process
|
| -// does not have an on-screen window.
|
| -//
|
| -// This class encapsulates some of the management of these data
|
| -// structures, in conjunction with the AcceleratedSurfaceContainerManagerMac.
|
| +// TODO(jam): remove this file when all files have been converted.
|
| +#include "content/browser/renderer_host/accelerated_surface_container_mac.h"
|
|
|
| -#include <CoreFoundation/CoreFoundation.h>
|
| -#include <OpenGL/OpenGL.h>
|
| -
|
| -#include "app/surface/transport_dib.h"
|
| -#include "base/basictypes.h"
|
| -#include "base/mac/scoped_cftyperef.h"
|
| -#include "base/scoped_ptr.h"
|
| -#include "ui/gfx/native_widget_types.h"
|
| -#include "ui/gfx/rect.h"
|
| -
|
| -namespace webkit {
|
| -namespace npapi {
|
| -struct WebPluginGeometry;
|
| -}
|
| -}
|
| -
|
| -class AcceleratedSurfaceContainerManagerMac;
|
| -
|
| -class AcceleratedSurfaceContainerMac {
|
| - public:
|
| - AcceleratedSurfaceContainerMac(
|
| - AcceleratedSurfaceContainerManagerMac* manager,
|
| - bool opaque);
|
| - virtual ~AcceleratedSurfaceContainerMac();
|
| -
|
| - // Sets the backing store and size of this accelerated surface container.
|
| - // 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(int32 width,
|
| - int32 height,
|
| - uint64 io_surface_identifier);
|
| - void SetSizeAndTransportDIB(int32 width,
|
| - int32 height,
|
| - TransportDIB::Handle transport_dib);
|
| -
|
| - // Tells the accelerated surface container that its geometry has changed,
|
| - // for example because of a scroll event. (Note that the container
|
| - // currently only pays attention to the clip width and height, since the
|
| - // view in which it is hosted is responsible for positioning it on the
|
| - // page.)
|
| - void SetGeometry(const webkit::npapi::WebPluginGeometry& geom);
|
| -
|
| - // Draws this accelerated surface's contents, texture mapped onto a quad in
|
| - // the given OpenGL context. TODO(kbr): figure out and define exactly how the
|
| - // coordinate system will work out.
|
| - void Draw(CGLContextObj context);
|
| -
|
| - // Causes the next Draw call to trigger a texture upload. Should be called any
|
| - // time the drawing context has changed.
|
| - void ForceTextureReload() { texture_needs_upload_ = true; }
|
| -
|
| - // Returns if the surface should be shown.
|
| - bool ShouldBeVisible() const;
|
| -
|
| - // Notifies the the container that its surface was painted to.
|
| - void set_was_painted_to(uint64 surface_id);
|
| -
|
| - // Notifies the container that its surface is invalid.
|
| - void set_surface_invalid() { was_painted_to_ = false; }
|
| - private:
|
| - // The manager of this accelerated surface container.
|
| - AcceleratedSurfaceContainerManagerMac* manager_;
|
| -
|
| - // Whether this accelerated surface's content is supposed to be opaque.
|
| - bool opaque_;
|
| -
|
| - // The IOSurfaceRef, if any, that has been handed from the GPU
|
| - // plugin process back to the browser process for drawing.
|
| - // This is held as a CFTypeRef because we can't refer to the
|
| - // IOSurfaceRef type when building on 10.5.
|
| - base::mac::ScopedCFTypeRef<CFTypeRef> surface_;
|
| -
|
| - // The id of |surface_|, or 0 if |surface_| is NULL.
|
| - uint64 surface_id_;
|
| -
|
| - // The width and height of the io surface. During resizing, this is different
|
| - // from |width_| and |height_|.
|
| - int32 surface_width_;
|
| - int32 surface_height_;
|
| -
|
| - // The TransportDIB which is used in pre-10.6 systems where the IOSurface
|
| - // API is not supported. This is a weak reference to the actual TransportDIB
|
| - // whic is owned by the GPU process.
|
| - scoped_ptr<TransportDIB> transport_dib_;
|
| -
|
| - // The width and height of the container.
|
| - int32 width_;
|
| - int32 height_;
|
| -
|
| - // The clip rectangle, relative to the (x_, y_) origin.
|
| - gfx::Rect clip_rect_;
|
| -
|
| - // The "live" OpenGL texture referring to this IOSurfaceRef. Note
|
| - // that per the CGLTexImageIOSurface2D API we do not need to
|
| - // explicitly update this texture's contents once created. All we
|
| - // need to do is ensure it is re-bound before attempting to draw
|
| - // with it.
|
| - GLuint texture_;
|
| -
|
| - // True if we need to upload the texture again during the next draw.
|
| - bool texture_needs_upload_;
|
| -
|
| - // This may refer to an old version of the texture if the container is
|
| - // resized, for example.
|
| - GLuint texture_pending_deletion_;
|
| -
|
| - // Stores if the plugin has a visible state.
|
| - bool visible_;
|
| -
|
| - // Stores if the plugin's IOSurface has been swapped before. Used to not show
|
| - // it before it hasn't been painted to at least once.
|
| - bool was_painted_to_;
|
| -
|
| - // Releases the IOSurface reference, if any, retained by this object.
|
| - void ReleaseIOSurface();
|
| -
|
| - // Enqueue our texture for later deletion.
|
| - void EnqueueTextureForDeletion();
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AcceleratedSurfaceContainerMac);
|
| -};
|
| -
|
| #endif // CHROME_BROWSER_RENDERER_HOST_GPU_PLUGIN_CONTAINER_MAC_H_
|
| -
|
|
|