| Index: cc/layers/video_layer_impl.cc
|
| diff --git a/cc/layers/video_layer_impl.cc b/cc/layers/video_layer_impl.cc
|
| index 759c79de26499667d1fa34762ad8117cb934c08f..bbdecb94b663c19fb3e9fdb3998376b9fdbc9701 100644
|
| --- a/cc/layers/video_layer_impl.cc
|
| +++ b/cc/layers/video_layer_impl.cc
|
| @@ -24,6 +24,12 @@
|
|
|
| namespace cc {
|
|
|
| +VideoLayerImpl::FrameResource::FrameResource(ResourceId id,
|
| + gfx::Size size,
|
| + bool allow_overlay)
|
| + : id(id), size(size), allow_overlay(allow_overlay) {
|
| +}
|
| +
|
| // static
|
| scoped_ptr<VideoLayerImpl> VideoLayerImpl::Create(
|
| LayerTreeImpl* tree_impl,
|
| @@ -125,7 +131,9 @@ bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
|
| external_resources.mailboxes[i],
|
| SingleReleaseCallbackImpl::Create(
|
| external_resources.release_callbacks[i]));
|
| - frame_resources_.push_back(resource_id);
|
| + frame_resources_.push_back(
|
| + FrameResource(resource_id, external_resources.mailboxes[i].size(),
|
| + external_resources.mailboxes[i].allow_overlay()));
|
| }
|
|
|
| return true;
|
| @@ -271,8 +279,10 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
|
| yuv_video_quad->SetNew(
|
| shared_quad_state, quad_rect, opaque_rect, visible_quad_rect,
|
| ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, uv_tex_size,
|
| - frame_resources_[0], frame_resources_[1], frame_resources_[2],
|
| - frame_resources_.size() > 3 ? frame_resources_[3] : 0, color_space);
|
| + frame_resources_[0].id, frame_resources_[1].id,
|
| + frame_resources_[2].id,
|
| + frame_resources_.size() > 3 ? frame_resources_[3].id : 0,
|
| + color_space);
|
| ValidateQuadResources(yuv_video_quad);
|
| break;
|
| }
|
| @@ -290,17 +300,10 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
|
| bool nearest_neighbor = false;
|
| TextureDrawQuad* texture_quad =
|
| render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>();
|
| - texture_quad->SetNew(shared_quad_state,
|
| - quad_rect,
|
| - opaque_rect,
|
| - visible_quad_rect,
|
| - frame_resources_[0],
|
| - premultiplied_alpha,
|
| - uv_top_left,
|
| - uv_bottom_right,
|
| - SK_ColorTRANSPARENT,
|
| - opacity,
|
| - flipped,
|
| + texture_quad->SetNew(shared_quad_state, quad_rect, opaque_rect,
|
| + visible_quad_rect, frame_resources_[0].id,
|
| + premultiplied_alpha, uv_top_left, uv_bottom_right,
|
| + SK_ColorTRANSPARENT, opacity, flipped,
|
| nearest_neighbor);
|
| ValidateQuadResources(texture_quad);
|
| break;
|
| @@ -315,8 +318,10 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
|
| render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>();
|
| stream_video_quad->SetNew(
|
| shared_quad_state, quad_rect, opaque_rect, visible_quad_rect,
|
| - frame_resources_[0],
|
| + frame_resources_[0].id,
|
| scale * provider_client_impl_->StreamTextureMatrix());
|
| + stream_video_quad->resource_size = frame_resources_[0].size;
|
| + stream_video_quad->allow_overlay = frame_resources_[0].allow_overlay;
|
| ValidateQuadResources(stream_video_quad);
|
| break;
|
| }
|
| @@ -326,12 +331,9 @@ void VideoLayerImpl::AppendQuads(RenderPass* render_pass,
|
| break;
|
| IOSurfaceDrawQuad* io_surface_quad =
|
| render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>();
|
| - io_surface_quad->SetNew(shared_quad_state,
|
| - quad_rect,
|
| - opaque_rect,
|
| - visible_quad_rect,
|
| - visible_rect.size(),
|
| - frame_resources_[0],
|
| + io_surface_quad->SetNew(shared_quad_state, quad_rect, opaque_rect,
|
| + visible_quad_rect, visible_rect.size(),
|
| + frame_resources_[0].id,
|
| IOSurfaceDrawQuad::UNFLIPPED);
|
| ValidateQuadResources(io_surface_quad);
|
| break;
|
| @@ -383,7 +385,7 @@ void VideoLayerImpl::DidDraw(ResourceProvider* resource_provider) {
|
| software_release_callback_.Reset();
|
| } else {
|
| for (size_t i = 0; i < frame_resources_.size(); ++i)
|
| - resource_provider->DeleteResource(frame_resources_[i]);
|
| + resource_provider->DeleteResource(frame_resources_[i].id);
|
| frame_resources_.clear();
|
| }
|
|
|
|
|