Index: ui/gfx/mojo/buffer_types_struct_traits.cc |
diff --git a/ui/gfx/mojo/buffer_types_struct_traits.cc b/ui/gfx/mojo/buffer_types_struct_traits.cc |
index 9450770235c362db5840257e14e9f6eb664f3071..6eb14953be589bc056068fcc2cdf7ae44014d092 100644 |
--- a/ui/gfx/mojo/buffer_types_struct_traits.cc |
+++ b/ui/gfx/mojo/buffer_types_struct_traits.cc |
@@ -60,24 +60,14 @@ bool StructTraits< |
#endif |
} |
-mojo::ScopedHandle StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView, |
- gfx::GpuMemoryBufferHandle>:: |
+mojo::ScopedSharedBufferHandle |
+StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView, |
+ gfx::GpuMemoryBufferHandle>:: |
shared_memory_handle(const gfx::GpuMemoryBufferHandle& handle) { |
if (handle.type != gfx::SHARED_MEMORY_BUFFER) |
- return mojo::ScopedHandle(); |
-#if defined(OS_MACOSX) |
- base::SharedMemoryHandle shm_handle = handle.handle; |
- size_t num_bytes = 0; |
- if (!shm_handle.GetSize(&num_bytes)) |
- return mojo::ScopedHandle(); |
- mojo::ScopedSharedBufferHandle scoped_handle = |
- mojo::WrapSharedMemoryHandle(shm_handle, num_bytes, false); |
- mojo::Handle mojo_handle = scoped_handle.release(); |
- return mojo::MakeScopedHandle(mojo_handle); |
-#else // defined(OS_MACOSX) |
- base::PlatformFile platform_file = handle.handle.GetHandle(); |
- return mojo::WrapPlatformFile(platform_file); |
-#endif // defined(OS_MACOSX) |
+ return mojo::ScopedSharedBufferHandle(); |
+ return mojo::WrapSharedMemoryHandle(handle.handle, handle.handle.GetSize(), |
+ false); |
} |
const gfx::NativePixmapHandle& |
@@ -112,35 +102,12 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView, |
return false; |
if (out->type == gfx::SHARED_MEMORY_BUFFER) { |
- mojo::ScopedHandle handle = data.TakeSharedMemoryHandle(); |
+ mojo::ScopedSharedBufferHandle handle = data.TakeSharedMemoryHandle(); |
if (handle.is_valid()) { |
-#if defined(OS_MACOSX) |
- mojo::Handle mojo_handle = handle.release(); |
- mojo::ScopedSharedBufferHandle buffer_handle = |
- mojo::MakeScopedHandle(mojo::SharedBufferHandle(mojo_handle.value())); |
MojoResult unwrap_result = mojo::UnwrapSharedMemoryHandle( |
- std::move(buffer_handle), &out->handle, nullptr, nullptr); |
- if (unwrap_result != MOJO_RESULT_OK) |
- return false; |
-#else // defined(OS_MACOSX) |
- base::PlatformFile platform_file; |
- MojoResult unwrap_result = |
- mojo::UnwrapPlatformFile(std::move(handle), &platform_file); |
+ std::move(handle), &out->handle, nullptr, nullptr); |
if (unwrap_result != MOJO_RESULT_OK) |
return false; |
- // TODO(rockot): Pass GUIDs through Mojo. https://crbug.com/713763. |
- // TODO(erikchen): During serialization, the SharedMemoryHandle is |
- // decomposed on Linux into a file_descriptor. The serialization path |
- // should be changed to serialize a Mojo shared buffer instead. |
- // https://crbug.com/713763. |
- base::UnguessableToken guid = base::UnguessableToken::Create(); |
-#if defined(OS_WIN) |
- out->handle = base::SharedMemoryHandle(platform_file, guid); |
-#else |
- out->handle = base::SharedMemoryHandle( |
- base::FileDescriptor(platform_file, true), guid); |
-#endif |
-#endif // defined(OS_MACOSX) |
} |
out->offset = data.offset(); |