Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3166)

Unified Diff: cc/ipc/copy_output_result_struct_traits.h

Issue 2686833003: CopyOutputResult must have a working release callback when received over mojo (Closed)
Patch Set: d Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698