Chromium Code Reviews| Index: content/common/gpu/client/gpu_memory_buffer_impl_io_surface.cc |
| diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_io_surface.cc b/content/common/gpu/client/gpu_memory_buffer_impl_io_surface.cc |
| index 029ea4f7c5b0c79172bc76d4c092e760a3fb278a..f67c8a194950559dd6d9ee10d5b9800287c91812 100644 |
| --- a/content/common/gpu/client/gpu_memory_buffer_impl_io_surface.cc |
| +++ b/content/common/gpu/client/gpu_memory_buffer_impl_io_surface.cc |
| @@ -4,17 +4,38 @@ |
| #include "content/common/gpu/client/gpu_memory_buffer_impl_io_surface.h" |
| -#include "base/logging.h" |
| #include "ui/gl/gl_bindings.h" |
| namespace content { |
| GpuMemoryBufferImplIOSurface::GpuMemoryBufferImplIOSurface( |
| const gfx::Size& size, |
| - unsigned internalformat) |
| - : GpuMemoryBufferImpl(size, internalformat) {} |
| + unsigned internalformat, |
| + const DestructionCallback& callback, |
| + IOSurfaceRef io_surface) |
| + : GpuMemoryBufferImpl(size, internalformat, callback), |
| + io_surface_(io_surface) { |
| +} |
| + |
| +GpuMemoryBufferImplIOSurface::~GpuMemoryBufferImplIOSurface() { |
| +} |
| + |
| +// static |
| +scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImplIOSurface::CreateFromHandle( |
| + const gfx::GpuMemoryBufferHandle& handle, |
| + const gfx::Size& size, |
| + unsigned internalformat, |
| + const DestructionCallback& callback) { |
| + DCHECK(IsFormatSupported(internalformat)); |
| + |
| + base::ScopedCFTypeRef<IOSurfaceRef> io_surface( |
| + IOSurfaceLookup(handle.io_surface_id)); |
| + if (!io_surface) |
| + return scoped_ptr<GpuMemoryBufferImpl>(); |
| -GpuMemoryBufferImplIOSurface::~GpuMemoryBufferImplIOSurface() {} |
| + return make_scoped_ptr<GpuMemoryBufferImpl>(new GpuMemoryBufferImplIOSurface( |
| + size, internalformat, callback, io_surface.get())); |
| +} |
| // static |
| bool GpuMemoryBufferImplIOSurface::IsFormatSupported(unsigned internalformat) { |
| @@ -54,18 +75,6 @@ uint32 GpuMemoryBufferImplIOSurface::PixelFormat(unsigned internalformat) { |
| } |
| } |
| -bool GpuMemoryBufferImplIOSurface::InitializeFromHandle( |
| - const gfx::GpuMemoryBufferHandle& handle) { |
| - DCHECK(IsFormatSupported(internalformat_)); |
| - io_surface_.reset(IOSurfaceLookup(handle.io_surface_id)); |
| - if (!io_surface_) { |
| - VLOG(1) << "IOSurface lookup failed"; |
|
piman
2014/09/24 06:40:28
nit: do you want to keep this?
reveman
2014/09/24 07:10:54
I don't think this will ever fail unless there's s
|
| - return false; |
| - } |
| - |
| - return true; |
| -} |
| - |
| void* GpuMemoryBufferImplIOSurface::Map() { |
| DCHECK(!mapped_); |
| IOSurfaceLock(io_surface_, 0, NULL); |