Index: content/common/cc_messages.cc |
diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc |
index 81114ed68ee68f0fd90135e5da99db08a7cfce0c..c61c812c510667631f4ae755658a1ccc3ee84464 100644 |
--- a/content/common/cc_messages.cc |
+++ b/content/common/cc_messages.cc |
@@ -558,6 +558,7 @@ void ParamTraits<cc::Mailbox>::Log(const param_type& p, std::string* l) { |
namespace { |
enum CompositorFrameType { |
+ NO_FRAME, |
DELEGATED_FRAME, |
GL_FRAME, |
}; |
@@ -570,10 +571,11 @@ void ParamTraits<cc::CompositorFrame>::Write(Message* m, |
DCHECK(!p.gl_frame_data); |
WriteParam(m, static_cast<int>(DELEGATED_FRAME)); |
WriteParam(m, *p.delegated_frame_data); |
- } else { |
- DCHECK(p.gl_frame_data); |
+ } else if (p.gl_frame_data) { |
WriteParam(m, static_cast<int>(GL_FRAME)); |
WriteParam(m, *p.gl_frame_data); |
+ } else { |
+ WriteParam(m, static_cast<int>(NO_FRAME)); |
} |
} |
@@ -598,6 +600,8 @@ bool ParamTraits<cc::CompositorFrame>::Read(const Message* m, |
if (!ReadParam(m, iter, p->gl_frame_data.get())) |
return false; |
break; |
+ case NO_FRAME: |
+ break; |
default: |
return false; |
} |
@@ -616,6 +620,51 @@ void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, |
l->append(")"); |
} |
+void ParamTraits<cc::CompositorFrameAck>::Write(Message* m, |
+ const param_type& p) { |
+ WriteParam(m, p.resources); |
+ if (p.gl_frame_data) { |
+ WriteParam(m, static_cast<int>(GL_FRAME)); |
+ WriteParam(m, *p.gl_frame_data); |
+ } else { |
+ WriteParam(m, static_cast<int>(NO_FRAME)); |
+ } |
+} |
+ |
+bool ParamTraits<cc::CompositorFrameAck>::Read(const Message* m, |
+ PickleIterator* iter, |
+ param_type* p) { |
+ if (!ReadParam(m, iter, &p->resources)) |
+ return false; |
+ |
+ int compositor_frame_type; |
+ if (!ReadParam(m, iter, &compositor_frame_type)) |
+ return false; |
+ |
+ switch (compositor_frame_type) { |
+ case NO_FRAME: |
+ break; |
+ case GL_FRAME: |
+ p->gl_frame_data.reset(new cc::GLFrameData()); |
+ if (!ReadParam(m, iter, p->gl_frame_data.get())) |
+ return false; |
+ break; |
+ default: |
+ return false; |
+ } |
+ return true; |
+} |
+ |
+void ParamTraits<cc::CompositorFrameAck>::Log(const param_type& p, |
+ std::string* l) { |
+ l->append("CompositorFrameAck("); |
+ LogParam(p.resources, l); |
+ l->append(", "); |
+ if (p.gl_frame_data) |
+ LogParam(*p.gl_frame_data, l); |
+ l->append(")"); |
+} |
+ |
void ParamTraits<cc::DelegatedFrameData>::Write(Message* m, |
const param_type& p) { |
WriteParam(m, p.resource_list); |