diff options
author | reveman <reveman@chromium.org> | 2015-08-12 16:21:36 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-12 23:41:09 +0000 |
commit | 9f603722c02171d1448754aaea96d2076f28773d (patch) | |
tree | 1fce9ebcf330f0ddf25e8a38567b4790263f534a | |
parent | f89a2ec26f8482abb3ceabbda6d46d58c6a416ce (diff) | |
download | chromium_src-9f603722c02171d1448754aaea96d2076f28773d.zip chromium_src-9f603722c02171d1448754aaea96d2076f28773d.tar.gz chromium_src-9f603722c02171d1448754aaea96d2076f28773d.tar.bz2 |
content: Terminate with OOM error when failing to map shared memory baked GpuMemoryBuffer.
Improve diagnostics by failing immediately in case of an OOM error
instead of handling these type of failures in the same way as a lost
context situation.
BUG=
Review URL: https://codereview.chromium.org/1283203004
Cr-Commit-Position: refs/heads/master@{#343122}
-rw-r--r-- | content/common/gpu/client/gpu_memory_buffer_impl_shared_memory.cc | 13 |
1 files changed, 7 insertions, 6 deletions
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 44e2dd5d..b25d834 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 @@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/numerics/safe_math.h" +#include "base/process/memory.h" #include "ui/gfx/buffer_format_util.h" #include "ui/gl/gl_bindings.h" @@ -34,11 +35,11 @@ scoped_ptr<GpuMemoryBufferImpl> GpuMemoryBufferImplSharedMemory::Create( const DestructionCallback& callback) { size_t buffer_size = 0u; if (!BufferSizeInBytes(size, format, &buffer_size)) - return scoped_ptr<GpuMemoryBufferImpl>(); + return nullptr; scoped_ptr<base::SharedMemory> shared_memory(new base::SharedMemory()); if (!shared_memory->CreateAndMapAnonymous(buffer_size)) - return scoped_ptr<GpuMemoryBufferImpl>(); + return nullptr; return make_scoped_ptr(new GpuMemoryBufferImplSharedMemory( id, size, format, callback, shared_memory.Pass())); @@ -74,16 +75,16 @@ GpuMemoryBufferImplSharedMemory::CreateFromHandle( gfx::BufferFormat format, const DestructionCallback& callback) { if (!base::SharedMemory::IsHandleValid(handle.handle)) - return scoped_ptr<GpuMemoryBufferImpl>(); + return nullptr; size_t buffer_size = 0u; - if (!BufferSizeInBytes(size, format, &buffer_size)) - return scoped_ptr<GpuMemoryBufferImpl>(); + bool result = BufferSizeInBytes(size, format, &buffer_size); + DCHECK(result); scoped_ptr<base::SharedMemory> shared_memory( new base::SharedMemory(handle.handle, false)); if (!shared_memory->Map(buffer_size)) - return scoped_ptr<GpuMemoryBufferImpl>(); + base::TerminateBecauseOutOfMemory(buffer_size); return make_scoped_ptr<GpuMemoryBufferImpl>( new GpuMemoryBufferImplSharedMemory( |