Index: content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
diff --git a/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc b/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
index 4c1534db191be9824d9603454e1fd2e762f06936..7f9b18d69657546830dee2137649ed9df43f4d3c 100644 |
--- a/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
+++ b/content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc |
@@ -4,18 +4,31 @@ |
#include "content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.h" |
+#include "base/bind.h" |
#include "base/numerics/safe_math.h" |
#include "ui/gl/gl_bindings.h" |
namespace content { |
+namespace { |
+ |
+void Noop() { |
+} |
+ |
+} // namespace |
GpuMemoryBufferImplSharedMemory::GpuMemoryBufferImplSharedMemory( |
const gfx::Size& size, |
- unsigned internalformat) |
- : GpuMemoryBufferImpl(size, internalformat) { |
+ unsigned internalformat, |
+ const DestructionCallback& callback) |
+ : GpuMemoryBufferImpl(size, internalformat), callback_(callback) { |
} |
GpuMemoryBufferImplSharedMemory::~GpuMemoryBufferImplSharedMemory() { |
+ if (!shared_memory_) |
+ return; |
+ |
+ // Call destruction callback if instance was successfully initialized. |
+ callback_.Run(); |
} |
// static |
@@ -27,7 +40,8 @@ void GpuMemoryBufferImplSharedMemory::Create(const gfx::Size& size, |
size, internalformat, usage)); |
scoped_ptr<GpuMemoryBufferImplSharedMemory> buffer( |
- new GpuMemoryBufferImplSharedMemory(size, internalformat)); |
+ new GpuMemoryBufferImplSharedMemory( |
+ size, internalformat, base::Bind(&Noop))); |
if (buffer->Initialize()) { |
callback.Run(buffer.PassAs<GpuMemoryBufferImpl>()); |
return; |