| Index: webkit/glue/plugins/mac_accelerated_surface_container.cc
|
| diff --git a/webkit/glue/plugins/mac_accelerated_surface_container.cc b/webkit/glue/plugins/mac_accelerated_surface_container.cc
|
| deleted file mode 100644
|
| index 8eca9d2646b476c748cbe4718f93aeb7a42aae5b..0000000000000000000000000000000000000000
|
| --- a/webkit/glue/plugins/mac_accelerated_surface_container.cc
|
| +++ /dev/null
|
| @@ -1,158 +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 "webkit/glue/plugins/mac_accelerated_surface_container.h"
|
| -
|
| -#include "app/surface/io_surface_support_mac.h"
|
| -#include "base/logging.h"
|
| -#include "webkit/glue/plugins/mac_accelerated_surface_container_manager.h"
|
| -#include "webkit/glue/plugins/webplugin.h"
|
| -
|
| -MacAcceleratedSurfaceContainer::MacAcceleratedSurfaceContainer()
|
| - : x_(0),
|
| - y_(0),
|
| - surface_(NULL),
|
| - width_(0),
|
| - height_(0),
|
| - texture_(0) {
|
| -}
|
| -
|
| -MacAcceleratedSurfaceContainer::~MacAcceleratedSurfaceContainer() {
|
| - ReleaseIOSurface();
|
| -}
|
| -
|
| -void MacAcceleratedSurfaceContainer::ReleaseIOSurface() {
|
| - if (surface_) {
|
| - CFRelease(surface_);
|
| - surface_ = NULL;
|
| - }
|
| -}
|
| -
|
| -void MacAcceleratedSurfaceContainer::SetSizeAndIOSurface(
|
| - int32 width,
|
| - int32 height,
|
| - uint64 io_surface_identifier,
|
| - MacAcceleratedSurfaceContainerManager* manager) {
|
| - ReleaseIOSurface();
|
| - IOSurfaceSupport* io_surface_support = IOSurfaceSupport::Initialize();
|
| - if (io_surface_support) {
|
| - surface_ = io_surface_support->IOSurfaceLookup(
|
| - static_cast<uint32>(io_surface_identifier));
|
| - EnqueueTextureForDeletion(manager);
|
| - width_ = width;
|
| - height_ = height;
|
| - }
|
| -}
|
| -
|
| -void MacAcceleratedSurfaceContainer::SetSizeAndTransportDIB(
|
| - int32 width,
|
| - int32 height,
|
| - TransportDIB::Handle transport_dib,
|
| - MacAcceleratedSurfaceContainerManager* manager) {
|
| - if (TransportDIB::is_valid(transport_dib)) {
|
| - transport_dib_.reset(TransportDIB::Map(transport_dib));
|
| - EnqueueTextureForDeletion(manager);
|
| - width_ = width;
|
| - height_ = height;
|
| - }
|
| -}
|
| -
|
| -void MacAcceleratedSurfaceContainer::MoveTo(
|
| - const webkit_glue::WebPluginGeometry& geom) {
|
| - x_ = geom.window_rect.x();
|
| - y_ = geom.window_rect.y();
|
| - // TODO(kbr): may need to pay attention to cutout rects.
|
| - clipRect_ = geom.clip_rect;
|
| -}
|
| -
|
| -void MacAcceleratedSurfaceContainer::Draw(CGLContextObj context) {
|
| - IOSurfaceSupport* io_surface_support = IOSurfaceSupport::Initialize();
|
| - GLenum target = GL_TEXTURE_RECTANGLE_ARB;
|
| - if (!texture_) {
|
| - if ((io_surface_support && !surface_) ||
|
| - (!io_surface_support && !transport_dib_.get()))
|
| - return;
|
| - glGenTextures(1, &texture_);
|
| - glBindTexture(target, texture_);
|
| - glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
| - glTexParameterf(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
| - // When using an IOSurface, the texture does not need to be repeatedly
|
| - // uploaded, so bind the IOSurface once during texture gen in this case.
|
| - if (io_surface_support) {
|
| - DCHECK(surface_);
|
| - // Don't think we need to identify a plane.
|
| - GLuint plane = 0;
|
| - io_surface_support->CGLTexImageIOSurface2D(context,
|
| - target,
|
| - GL_RGBA,
|
| - width_,
|
| - height_,
|
| - GL_BGRA,
|
| - GL_UNSIGNED_INT_8_8_8_8_REV,
|
| - surface_,
|
| - plane);
|
| - } else {
|
| - // Reserve space on the card for the actual texture upload, done with the
|
| - // glTexSubImage2D() call, below.
|
| - glTexImage2D(target,
|
| - 0, // mipmap level 0
|
| - GL_RGBA, // internal format
|
| - width_,
|
| - height_,
|
| - 0, // no border
|
| - GL_BGRA, // The GPU plugin read BGRA pixels
|
| - GL_UNSIGNED_INT_8_8_8_8_REV,
|
| - NULL); // No data, this call just reserves room.
|
| - }
|
| - }
|
| -
|
| - // If using TransportDIBs, the texture needs to be uploaded every frame.
|
| - if (transport_dib_.get() != NULL) {
|
| - void* pixel_memory = transport_dib_->memory();
|
| - if (pixel_memory) {
|
| - glBindTexture(target, texture_);
|
| - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Needed for NPOT textures.
|
| - glTexSubImage2D(target,
|
| - 0, // mipmap level 0
|
| - 0, // x-offset
|
| - 0, // y-offset
|
| - width_,
|
| - height_,
|
| - GL_BGRA, // The GPU plugin gave us BGRA pixels
|
| - GL_UNSIGNED_INT_8_8_8_8_REV,
|
| - pixel_memory);
|
| - }
|
| - }
|
| -
|
| - if (texture_) {
|
| - // TODO(kbr): convert this to use only OpenGL ES 2.0 functionality
|
| - glBindTexture(target, texture_);
|
| - glEnable(target);
|
| - glBegin(GL_TRIANGLE_STRIP);
|
| - // TODO(kbr): may need to pay attention to cutout rects.
|
| - int clipX = clipRect_.x();
|
| - int clipY = clipRect_.y();
|
| - int clipWidth = clipRect_.width();
|
| - int clipHeight = clipRect_.height();
|
| - int x = x_ + clipX;
|
| - int y = y_ + clipY;
|
| - glTexCoord2f(clipX, height_ - clipY);
|
| - glVertex3f(x, y, 0);
|
| - glTexCoord2f(clipX + clipWidth, height_ - clipY);
|
| - glVertex3f(x + clipWidth, y, 0);
|
| - glTexCoord2f(clipX, height_ - clipY - clipHeight);
|
| - glVertex3f(x, y + clipHeight, 0);
|
| - glTexCoord2f(clipX + clipWidth, height_ - clipY - clipHeight);
|
| - glVertex3f(x + clipWidth, y + clipHeight, 0);
|
| - glEnd();
|
| - glDisable(target);
|
| - }
|
| -}
|
| -
|
| -void MacAcceleratedSurfaceContainer::EnqueueTextureForDeletion(
|
| - MacAcceleratedSurfaceContainerManager* manager) {
|
| - manager->EnqueueTextureForDeletion(texture_);
|
| - texture_ = 0;
|
| -}
|
| -
|
|
|