Chromium Code Reviews| Index: cc/ipc/cc_param_traits.cc |
| diff --git a/cc/ipc/cc_param_traits.cc b/cc/ipc/cc_param_traits.cc |
| index fc734204281f0d63f24c799fc54f2e569e9a7d71..79c16204d68e67cad56e2e03445d8f4d54defee4 100644 |
| --- a/cc/ipc/cc_param_traits.cc |
| +++ b/cc/ipc/cc_param_traits.cc |
| @@ -681,52 +681,12 @@ enum CompositorFrameType { |
| void ParamTraits<cc::CompositorFrame>::Write(base::Pickle* m, |
| const param_type& p) { |
| WriteParam(m, p.metadata); |
| - if (p.delegated_frame_data) { |
| - WriteParam(m, static_cast<int>(DELEGATED_FRAME)); |
| - WriteParam(m, *p.delegated_frame_data); |
| - } else { |
| + if (p.IsEmpty()) { |
| WriteParam(m, static_cast<int>(NO_FRAME)); |
| + return; |
| } |
| -} |
| - |
| -bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m, |
| - base::PickleIterator* iter, |
| - param_type* p) { |
| - if (!ReadParam(m, iter, &p->metadata)) |
| - return false; |
| - |
| - int compositor_frame_type; |
| - if (!ReadParam(m, iter, &compositor_frame_type)) |
| - return false; |
| - |
| - switch (compositor_frame_type) { |
| - case DELEGATED_FRAME: |
| - p->delegated_frame_data.reset(new cc::DelegatedFrameData()); |
| - if (!ReadParam(m, iter, p->delegated_frame_data.get())) |
| - return false; |
| - break; |
| - case NO_FRAME: |
| - break; |
| - default: |
| - return false; |
| - } |
| - return true; |
| -} |
| - |
| -void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, |
| - std::string* l) { |
| - l->append("CompositorFrame("); |
| - LogParam(p.metadata, l); |
| - l->append(", "); |
| - if (p.delegated_frame_data) |
| - LogParam(*p.delegated_frame_data, l); |
| - l->append(")"); |
| -} |
| - |
| -void ParamTraits<cc::DelegatedFrameData>::Write(base::Pickle* m, |
| - const param_type& p) { |
| + WriteParam(m, static_cast<int>(DELEGATED_FRAME)); |
| DCHECK_NE(0u, p.render_pass_list.size()); |
| - |
| size_t to_reserve = 0u; |
| to_reserve += p.resource_list.size() * sizeof(cc::TransferableResource); |
| for (const auto& pass : p.render_pass_list) { |
| @@ -745,9 +705,25 @@ void ParamTraits<cc::DelegatedFrameData>::Write(base::Pickle* m, |
| } |
| } |
| -bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, |
| - base::PickleIterator* iter, |
| - param_type* p) { |
| +bool ParamTraits<cc::CompositorFrame>::Read(const base::Pickle* m, |
| + base::PickleIterator* iter, |
| + param_type* p) { |
| + if (!ReadParam(m, iter, &p->metadata)) |
| + return false; |
| + |
| + int compositor_frame_type; |
| + if (!ReadParam(m, iter, &compositor_frame_type)) |
| + return false; |
| + |
| + if (compositor_frame_type == NO_FRAME) { |
| + p->render_pass_list.clear(); |
|
danakj
2016/10/25 22:23:07
Why would they not already be empty?
Fady Samuel
2016/10/26 03:13:55
You might want to overwrite an existing Compositor
Saman Sami
2016/10/26 14:41:18
Since the original code assumes the frame is empty
|
| + p->resource_list.clear(); |
| + return true; |
| + } |
| + |
| + if (compositor_frame_type != DELEGATED_FRAME) |
| + return false; |
| + |
| const size_t kMaxRenderPasses = 10000; |
| const size_t kMaxSharedQuadStateListSize = 100000; |
| const size_t kMaxQuadListSize = 1000000; |
| @@ -785,12 +761,15 @@ bool ParamTraits<cc::DelegatedFrameData>::Read(const base::Pickle* m, |
| pass_set.insert(render_pass->id); |
| p->render_pass_list.push_back(std::move(render_pass)); |
| } |
| + |
| return true; |
| } |
| -void ParamTraits<cc::DelegatedFrameData>::Log(const param_type& p, |
| - std::string* l) { |
| - l->append("DelegatedFrameData("); |
| +void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, |
| + std::string* l) { |
| + l->append("CompositorFrame("); |
| + LogParam(p.metadata, l); |
| + l->append(", "); |
| LogParam(p.resource_list, l); |
| l->append(", ["); |
| for (size_t i = 0; i < p.render_pass_list.size(); ++i) { |