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_ |