| Index: content/browser/compositor/io_surface_texture_mac.mm
|
| diff --git a/content/browser/compositor/io_surface_texture_mac.mm b/content/browser/compositor/io_surface_texture_mac.mm
|
| index 545791e13140c39e8fd023d7060d0a8a91c2ddf9..dea6b2876828f0d477ab96ebc989fa0985a5341b 100644
|
| --- a/content/browser/compositor/io_surface_texture_mac.mm
|
| +++ b/content/browser/compositor/io_surface_texture_mac.mm
|
| @@ -35,28 +35,30 @@
|
|
|
| // static
|
| scoped_refptr<IOSurfaceTexture> IOSurfaceTexture::Create() {
|
| - scoped_refptr<IOSurfaceContext> context = IOSurfaceContext::Get();
|
| - if (!context.get()) {
|
| + scoped_refptr<IOSurfaceContext> offscreen_context =
|
| + IOSurfaceContext::Get(
|
| + IOSurfaceContext::kOffscreenContext);
|
| + if (!offscreen_context.get()) {
|
| LOG(ERROR) << "Failed to create context for offscreen operations";
|
| return NULL;
|
| }
|
|
|
| - return new IOSurfaceTexture(context);
|
| + return new IOSurfaceTexture(offscreen_context);
|
| }
|
|
|
| IOSurfaceTexture::IOSurfaceTexture(
|
| - const scoped_refptr<IOSurfaceContext>& context)
|
| - : context_(context),
|
| + const scoped_refptr<IOSurfaceContext>& offscreen_context)
|
| + : offscreen_context_(offscreen_context),
|
| texture_(0),
|
| gl_error_(GL_NO_ERROR),
|
| eviction_queue_iterator_(eviction_queue_.Get().end()),
|
| eviction_has_been_drawn_since_updated_(false) {
|
| - CHECK(context_.get());
|
| + CHECK(offscreen_context_.get());
|
| }
|
|
|
| IOSurfaceTexture::~IOSurfaceTexture() {
|
| ReleaseIOSurfaceAndTexture();
|
| - context_ = NULL;
|
| + offscreen_context_ = NULL;
|
| DCHECK(eviction_queue_iterator_ == eviction_queue_.Get().end());
|
| }
|
|
|
| @@ -172,7 +174,7 @@
|
| CGLError cgl_error = kCGLNoError;
|
| {
|
| gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
|
| - context_->cgl_context());
|
| + offscreen_context_->cgl_context());
|
| glGenTextures(1, &texture_);
|
| glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture_);
|
| glTexParameterf(
|
| @@ -180,7 +182,7 @@
|
| glTexParameterf(
|
| GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
| cgl_error = CGLTexImageIOSurface2D(
|
| - context_->cgl_context(),
|
| + offscreen_context_->cgl_context(),
|
| GL_TEXTURE_RECTANGLE_ARB,
|
| GL_RGBA,
|
| rounded_size.width(),
|
| @@ -209,7 +211,7 @@
|
|
|
| void IOSurfaceTexture::ReleaseIOSurfaceAndTexture() {
|
| gfx::ScopedCGLSetCurrentContext scoped_set_current_context(
|
| - context_->cgl_context());
|
| + offscreen_context_->cgl_context());
|
|
|
| if (texture_) {
|
| glDeleteTextures(1, &texture_);
|
| @@ -219,6 +221,10 @@
|
| io_surface_.reset();
|
|
|
| EvictionMarkEvicted();
|
| +}
|
| +
|
| +bool IOSurfaceTexture::HasBeenPoisoned() const {
|
| + return offscreen_context_->HasBeenPoisoned();
|
| }
|
|
|
| GLenum IOSurfaceTexture::GetAndSaveGLError() {
|
|
|