| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 1053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1064 NOTREACHED(); | 1064 NOTREACHED(); |
| 1065 } | 1065 } |
| 1066 | 1066 |
| 1067 scoped_ptr<gfx::GpuMemoryBuffer> RenderThreadImpl::AllocateGpuMemoryBuffer( | 1067 scoped_ptr<gfx::GpuMemoryBuffer> RenderThreadImpl::AllocateGpuMemoryBuffer( |
| 1068 size_t width, | 1068 size_t width, |
| 1069 size_t height, | 1069 size_t height, |
| 1070 unsigned internalformat) { | 1070 unsigned internalformat) { |
| 1071 if (!GpuMemoryBufferImpl::IsFormatValid(internalformat)) | 1071 if (!GpuMemoryBufferImpl::IsFormatValid(internalformat)) |
| 1072 return scoped_ptr<gfx::GpuMemoryBuffer>(); | 1072 return scoped_ptr<gfx::GpuMemoryBuffer>(); |
| 1073 | 1073 |
| 1074 size_t size = width * height * | |
| 1075 GpuMemoryBufferImpl::BytesPerPixel(internalformat); | |
| 1076 if (size > static_cast<size_t>(std::numeric_limits<int>::max())) | |
| 1077 return scoped_ptr<gfx::GpuMemoryBuffer>(); | |
| 1078 | |
| 1079 gfx::GpuMemoryBufferHandle handle; | 1074 gfx::GpuMemoryBufferHandle handle; |
| 1080 bool success; | 1075 bool success; |
| 1081 IPC::Message* message = | 1076 IPC::Message* message = |
| 1082 new ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer(size, &handle); | 1077 new ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer(width, |
| 1078 height, |
| 1079 internalformat, |
| 1080 &handle); |
| 1083 | 1081 |
| 1084 // Allow calling this from the compositor thread. | 1082 // Allow calling this from the compositor thread. |
| 1085 if (base::MessageLoop::current() == message_loop()) | 1083 if (base::MessageLoop::current() == message_loop()) |
| 1086 success = ChildThread::Send(message); | 1084 success = ChildThread::Send(message); |
| 1087 else | 1085 else |
| 1088 success = sync_message_filter()->Send(message); | 1086 success = sync_message_filter()->Send(message); |
| 1089 | 1087 |
| 1090 if (!success) | 1088 if (!success) |
| 1091 return scoped_ptr<gfx::GpuMemoryBuffer>(); | 1089 return scoped_ptr<gfx::GpuMemoryBuffer>(); |
| 1092 | 1090 |
| 1093 // Currently, shared memory is the only supported buffer type. | 1091 return GpuMemoryBufferImpl::Create( |
| 1094 if (handle.type != gfx::SHARED_MEMORY_BUFFER) | 1092 handle, |
| 1095 return scoped_ptr<gfx::GpuMemoryBuffer>(); | 1093 gfx::Size(width, height), |
| 1096 | 1094 internalformat).PassAs<gfx::GpuMemoryBuffer>(); |
| 1097 if (!base::SharedMemory::IsHandleValid(handle.handle)) | |
| 1098 return scoped_ptr<gfx::GpuMemoryBuffer>(); | |
| 1099 | |
| 1100 return make_scoped_ptr<gfx::GpuMemoryBuffer>( | |
| 1101 new GpuMemoryBufferImpl( | |
| 1102 make_scoped_ptr(new base::SharedMemory(handle.handle, false)), | |
| 1103 width, | |
| 1104 height, | |
| 1105 internalformat)); | |
| 1106 } | 1095 } |
| 1107 | 1096 |
| 1108 void RenderThreadImpl::DoNotSuspendWebKitSharedTimer() { | 1097 void RenderThreadImpl::DoNotSuspendWebKitSharedTimer() { |
| 1109 suspend_webkit_shared_timer_ = false; | 1098 suspend_webkit_shared_timer_ = false; |
| 1110 } | 1099 } |
| 1111 | 1100 |
| 1112 void RenderThreadImpl::DoNotNotifyWebKitOfModalLoop() { | 1101 void RenderThreadImpl::DoNotNotifyWebKitOfModalLoop() { |
| 1113 notify_webkit_of_modal_loop_ = false; | 1102 notify_webkit_of_modal_loop_ = false; |
| 1114 } | 1103 } |
| 1115 | 1104 |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1367 if (!gamepad_shared_memory_reader_) | 1356 if (!gamepad_shared_memory_reader_) |
| 1368 gamepad_shared_memory_reader_.reset(new GamepadSharedMemoryReader); | 1357 gamepad_shared_memory_reader_.reset(new GamepadSharedMemoryReader); |
| 1369 gamepad_shared_memory_reader_->SampleGamepads(*data); | 1358 gamepad_shared_memory_reader_->SampleGamepads(*data); |
| 1370 } | 1359 } |
| 1371 | 1360 |
| 1372 base::ProcessId RenderThreadImpl::renderer_process_id() const { | 1361 base::ProcessId RenderThreadImpl::renderer_process_id() const { |
| 1373 return renderer_process_id_; | 1362 return renderer_process_id_; |
| 1374 } | 1363 } |
| 1375 | 1364 |
| 1376 } // namespace content | 1365 } // namespace content |
| OLD | NEW |