| Index: cc/ipc/copy_output_result_struct_traits.cc
|
| diff --git a/cc/ipc/copy_output_result_struct_traits.cc b/cc/ipc/copy_output_result_struct_traits.cc
|
| index 0398fe115cd52463b56fbf2a1a1540d3d96b2935..c623026d73c3afc49e6b48d1eaf25e45005a62dc 100644
|
| --- a/cc/ipc/copy_output_result_struct_traits.cc
|
| +++ b/cc/ipc/copy_output_result_struct_traits.cc
|
| @@ -4,9 +4,39 @@
|
|
|
| #include "cc/ipc/copy_output_result_struct_traits.h"
|
|
|
| +void Release(cc::mojom::TextureMailboxReleaserPtr ptr,
|
| + const gpu::SyncToken& sync_token,
|
| + bool is_lost) {
|
| + ptr->Release(sync_token, is_lost);
|
| +}
|
| +
|
| namespace mojo {
|
|
|
| // static
|
| +const SkBitmap& StructTraits<cc::mojom::CopyOutputResultDataView,
|
| + std::unique_ptr<cc::CopyOutputResult>>::
|
| + bitmap(const std::unique_ptr<cc::CopyOutputResult>& result) {
|
| + static SkBitmap* null_bitmap = new SkBitmap();
|
| + if (!result->bitmap_)
|
| + return *null_bitmap;
|
| + return *result->bitmap_;
|
| +}
|
| +
|
| +// static
|
| +cc::mojom::TextureMailboxReleaserPtr
|
| +StructTraits<cc::mojom::CopyOutputResultDataView,
|
| + std::unique_ptr<cc::CopyOutputResult>>::
|
| + releaser(const std::unique_ptr<cc::CopyOutputResult>& result) {
|
| + if (result->release_callback_) {
|
| + DCHECK(result->ptr_provider_);
|
| + return result->ptr_provider_->GetTextureMailboxReleaser(
|
| + std::move(result->release_callback_));
|
| + } else {
|
| + return cc::mojom::TextureMailboxReleaserPtr();
|
| + }
|
| +}
|
| +
|
| +// static
|
| bool StructTraits<cc::mojom::CopyOutputResultDataView,
|
| std::unique_ptr<cc::CopyOutputResult>>::
|
| Read(cc::mojom::CopyOutputResultDataView data,
|
| @@ -23,19 +53,15 @@ bool StructTraits<cc::mojom::CopyOutputResultDataView,
|
| if (!data.ReadTextureMailbox(&result->texture_mailbox_))
|
| return false;
|
|
|
| + auto releaser = data.TakeReleaser<cc::mojom::TextureMailboxReleaserPtr>();
|
| + if (releaser) {
|
| + result->release_callback_ = cc::SingleReleaseCallback::Create(
|
| + base::Bind(Release, base::Passed(&releaser)));
|
| + }
|
| +
|
| *out_p = std::move(result);
|
|
|
| return true;
|
| }
|
|
|
| -// static
|
| -const SkBitmap& StructTraits<cc::mojom::CopyOutputResultDataView,
|
| - std::unique_ptr<cc::CopyOutputResult>>::
|
| - bitmap(const std::unique_ptr<cc::CopyOutputResult>& result) {
|
| - static SkBitmap* null_bitmap = new SkBitmap();
|
| - if (!result->bitmap_)
|
| - return *null_bitmap;
|
| - return *result->bitmap_;
|
| -}
|
| -
|
| } // namespace mojo
|
|
|