summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreveman <reveman@chromium.org>2015-08-12 16:21:36 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-12 23:41:09 +0000
commit9f603722c02171d1448754aaea96d2076f28773d (patch)
tree1fce9ebcf330f0ddf25e8a38567b4790263f534a
parentf89a2ec26f8482abb3ceabbda6d46d58c6a416ce (diff)
downloadchromium_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.cc13
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(