Chromium Code Reviews| Index: cc/ipc/copy_output_result_struct_traits.h |
| diff --git a/cc/ipc/copy_output_result_struct_traits.h b/cc/ipc/copy_output_result_struct_traits.h |
| index 727ac7c67136f7520bdc3f26ddd0ce915c0ae34d..c6ab9b551357af682a08690ccb0b44bbf68b0697 100644 |
| --- a/cc/ipc/copy_output_result_struct_traits.h |
| +++ b/cc/ipc/copy_output_result_struct_traits.h |
| @@ -6,16 +6,36 @@ |
| #define CC_IPC_COPY_OUTPUT_RESULT_STRUCT_TRAITS_H_ |
| #include "cc/ipc/copy_output_result.mojom-shared.h" |
| +#include "cc/ipc/texture_mailbox_releaser.mojom.h" |
| #include "cc/ipc/texture_mailbox_struct_traits.h" |
| #include "cc/output/copy_output_result.h" |
| #include "skia/public/interfaces/bitmap_skbitmap_struct_traits.h" |
| #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" |
| +namespace cc { |
| + |
| +struct TextureMailboxWithRelease { |
| + TextureMailbox texture_mailbox; |
| + mojom::TextureMailboxReleaserPtr releaser; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TextureMailboxWithRelease); |
| +}; |
| + |
| +} // namespace cc |
| + |
| namespace mojo { |
| template <> |
| struct StructTraits<cc::mojom::CopyOutputResultDataView, |
| std::unique_ptr<cc::CopyOutputResult>> { |
| + static bool IsNull(const std::unique_ptr<cc::CopyOutputResult>& result) { |
|
danakj
2017/02/13 18:41:05
What do these have to do with having the sub type?
|
| + return result->IsEmpty(); |
| + } |
| + |
| + static void SetToNull(std::unique_ptr<cc::CopyOutputResult>* out) { |
| + *out = cc::CopyOutputResult::CreateEmptyResult(); |
| + } |
| + |
| static const gfx::Size& size( |
| const std::unique_ptr<cc::CopyOutputResult>& result) { |
| return result->size_; |
| @@ -24,15 +44,30 @@ struct StructTraits<cc::mojom::CopyOutputResultDataView, |
| static const SkBitmap& bitmap( |
| const std::unique_ptr<cc::CopyOutputResult>& result); |
| - static const cc::TextureMailbox& texture_mailbox( |
| - const std::unique_ptr<cc::CopyOutputResult>& result) { |
| - return result->texture_mailbox_; |
| - } |
| + static const cc::TextureMailboxWithRelease& texture_mailbox( |
| + const std::unique_ptr<cc::CopyOutputResult>& result); |
| static bool Read(cc::mojom::CopyOutputResultDataView data, |
| std::unique_ptr<cc::CopyOutputResult>* out_p); |
| }; |
| +template <> |
| +struct StructTraits<cc::mojom::TextureMailboxWithReleaseDataView, |
| + cc::TextureMailboxWithRelease> { |
| + static const cc::TextureMailbox& texture_mailbox( |
| + const cc::TextureMailboxWithRelease& input) { |
| + return input.texture_mailbox; |
| + } |
| + |
| + static cc::mojom::TextureMailboxReleaserPtr releaser( |
| + const cc::TextureMailboxWithRelease& input) { |
| + return std::move(input.releaser); |
| + } |
| + |
| + static bool Read(cc::mojom::TextureMailboxWithReleaseDataView data, |
| + cc::TextureMailboxWithRelease* out_p); |
| +}; |
| + |
| } // namespace mojo |
| #endif // CC_IPC_COPY_OUTPUT_RESULT_STRUCT_TRAITS_H_ |