| Index: content/common/cc_messages.cc
|
| diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc
|
| index 17a7913a8d1c804ad64e3ea24331c2208165a7e3..b1c34be339a5ccb402dc99231479a5947c17743f 100644
|
| --- a/content/common/cc_messages.cc
|
| +++ b/content/common/cc_messages.cc
|
| @@ -299,8 +299,10 @@ void ParamTraits<cc::RenderPass>::Write(
|
|
|
| size_t shared_quad_state_index = 0;
|
| size_t last_shared_quad_state_index = kuint32max;
|
| - for (size_t i = 0; i < p.quad_list.size(); ++i) {
|
| - const cc::DrawQuad* quad = p.quad_list[i];
|
| + for (cc::QuadList::ConstIterator iter = p.quad_list.begin();
|
| + iter != p.quad_list.end();
|
| + ++iter) {
|
| + const cc::DrawQuad* quad = &*iter;
|
| DCHECK(quad->rect.Contains(quad->visible_rect))
|
| << quad->material << " rect: " << quad->rect.ToString()
|
| << " visible_rect: " << quad->visible_rect.ToString();
|
| @@ -393,13 +395,14 @@ static size_t ReserveSizeForRenderPassWrite(const cc::RenderPass& p) {
|
| return to_reserve;
|
| }
|
|
|
| -template<typename QuadType>
|
| -static scoped_ptr<cc::DrawQuad> ReadDrawQuad(const Message* m,
|
| - PickleIterator* iter) {
|
| - scoped_ptr<QuadType> quad(new QuadType);
|
| - if (!ReadParam(m, iter, quad.get()))
|
| - return scoped_ptr<QuadType>().template PassAs<cc::DrawQuad>();
|
| - return quad.template PassAs<cc::DrawQuad>();
|
| +template <typename QuadType>
|
| +static cc::DrawQuad* ReadDrawQuad(const Message* m,
|
| + PickleIterator* iter,
|
| + cc::RenderPass* render_pass) {
|
| + QuadType* quad = render_pass->CreateAndAppendDrawQuad<QuadType>();
|
| + if (!ReadParam(m, iter, quad))
|
| + return NULL;
|
| + return quad;
|
| }
|
|
|
| bool ParamTraits<cc::RenderPass>::Read(
|
| @@ -434,40 +437,40 @@ bool ParamTraits<cc::RenderPass>::Read(
|
| if (!ReadParam(m, &temp_iter, &material))
|
| return false;
|
|
|
| - scoped_ptr<cc::DrawQuad> draw_quad;
|
| + cc::DrawQuad* draw_quad = NULL;
|
| switch (material) {
|
| case cc::DrawQuad::CHECKERBOARD:
|
| - draw_quad = ReadDrawQuad<cc::CheckerboardDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::CheckerboardDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::DEBUG_BORDER:
|
| - draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::DebugBorderDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::IO_SURFACE_CONTENT:
|
| - draw_quad = ReadDrawQuad<cc::IOSurfaceDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::IOSurfaceDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::PICTURE_CONTENT:
|
| NOTREACHED();
|
| return false;
|
| case cc::DrawQuad::SURFACE_CONTENT:
|
| - draw_quad = ReadDrawQuad<cc::SurfaceDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::SurfaceDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::TEXTURE_CONTENT:
|
| - draw_quad = ReadDrawQuad<cc::TextureDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::TextureDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::RENDER_PASS:
|
| - draw_quad = ReadDrawQuad<cc::RenderPassDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::RenderPassDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::SOLID_COLOR:
|
| - draw_quad = ReadDrawQuad<cc::SolidColorDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::SolidColorDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::TILED_CONTENT:
|
| - draw_quad = ReadDrawQuad<cc::TileDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::TileDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::STREAM_VIDEO_CONTENT:
|
| - draw_quad = ReadDrawQuad<cc::StreamVideoDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::StreamVideoDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::YUV_VIDEO_CONTENT:
|
| - draw_quad = ReadDrawQuad<cc::YUVVideoDrawQuad>(m, iter);
|
| + draw_quad = ReadDrawQuad<cc::YUVVideoDrawQuad>(m, iter, p);
|
| break;
|
| case cc::DrawQuad::INVALID:
|
| break;
|
| @@ -507,7 +510,6 @@ bool ParamTraits<cc::RenderPass>::Read(
|
| }
|
|
|
| draw_quad->shared_quad_state = p->shared_quad_state_list.back();
|
| - p->quad_list.push_back(draw_quad.Pass());
|
| }
|
|
|
| return true;
|
| @@ -534,10 +536,12 @@ void ParamTraits<cc::RenderPass>::Log(
|
| LogParam(*p.shared_quad_state_list[i], l);
|
| }
|
| l->append("], [");
|
| - for (size_t i = 0; i < p.quad_list.size(); ++i) {
|
| - if (i)
|
| + for (cc::QuadList::ConstIterator iter = p.quad_list.begin();
|
| + iter != p.quad_list.end();
|
| + ++iter) {
|
| + if (iter != p.quad_list.begin())
|
| l->append(", ");
|
| - const cc::DrawQuad* quad = p.quad_list[i];
|
| + const cc::DrawQuad* quad = &*iter;
|
| switch (quad->material) {
|
| case cc::DrawQuad::CHECKERBOARD:
|
| LogParam(*cc::CheckerboardDrawQuad::MaterialCast(quad), l);
|
|
|