summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/mac_gpu_plugin_container.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/mac_gpu_plugin_container.h')
-rw-r--r--webkit/glue/plugins/mac_gpu_plugin_container.h114
1 files changed, 0 insertions, 114 deletions
diff --git a/webkit/glue/plugins/mac_gpu_plugin_container.h b/webkit/glue/plugins/mac_gpu_plugin_container.h
deleted file mode 100644
index 4055a4b..0000000
--- a/webkit/glue/plugins/mac_gpu_plugin_container.h
+++ /dev/null
@@ -1,114 +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.
-
-#ifndef WEBKIT_GLUE_PLUGINS_MAC_GPU_PLUGIN_CONTAINER_H_
-#define WEBKIT_GLUE_PLUGINS_MAC_GPU_PLUGIN_CONTAINER_H_
-
-// 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 MacGPUPluginContainerManager.
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <OpenGL/OpenGL.h>
-
-#include "app/gfx/native_widget_types.h"
-#include "base/basictypes.h"
-#include "base/scoped_ptr.h"
-#include "base/gfx/rect.h"
-#include "chrome/common/transport_dib.h"
-
-namespace webkit_glue {
-struct WebPluginGeometry;
-}
-
-class MacGPUPluginContainerManager;
-
-class MacGPUPluginContainer {
- public:
- MacGPUPluginContainer();
- virtual ~MacGPUPluginContainer();
-
- // Sets the backing store and size of this plugin 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,
- MacGPUPluginContainerManager* manager);
- void SetSizeAndTransportDIB(int32 width,
- int32 height,
- TransportDIB::Handle transport_dib,
- MacGPUPluginContainerManager* manager);
-
- // Tells the plugin container that it has moved relative to the
- // origin of the window, for example because of a scroll event.
- void MoveTo(const webkit_glue::WebPluginGeometry& geom);
-
- // Draws this plugin'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);
-
- // Enqueue our texture for later deletion. Call this before deleting
- // this object.
- void EnqueueTextureForDeletion(MacGPUPluginContainerManager* manager);
-
- private:
- // We currently only have a viable implementation of this class on
- // Snow Leopard. We need to think about fallback strategies that
- // will work on Leopard.
-
- // The x and y coordinates of the plugin window on the web page.
- int x_;
- int y_;
-
- void ReleaseIOSurface();
-
- // 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.
- CFTypeRef surface_;
-
- // 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 surface.
- int32 width_;
- int32 height_;
-
- // The clip rectangle, relative to the (x_, y_) origin.
- gfx::Rect clipRect_;
-
- // 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_;
-
- DISALLOW_COPY_AND_ASSIGN(MacGPUPluginContainer);
-};
-
-#endif // WEBKIT_GLUE_PLUGINS_MAC_GPU_PLUGIN_CONTAINER_H_
-