| Index: cc/output/ca_layer_overlay.cc
|
| diff --git a/cc/output/ca_layer_overlay.cc b/cc/output/ca_layer_overlay.cc
|
| index 3e53dd4d5d6918461330ff5d94375cd727a10374..75cc7398349656265eeeebfb3d482f4096f0fee7 100644
|
| --- a/cc/output/ca_layer_overlay.cc
|
| +++ b/cc/output/ca_layer_overlay.cc
|
| @@ -41,10 +41,11 @@ enum CALayerResult {
|
| CALayerResult FromStreamVideoQuad(ResourceProvider* resource_provider,
|
| const StreamVideoDrawQuad* quad,
|
| CALayerOverlay* ca_layer_overlay) {
|
| - unsigned resource_id = quad->resource_id();
|
| - if (!resource_provider->IsOverlayCandidate(resource_id))
|
| + if (!resource_provider->IsOverlayCandidate(quad->resource_id()))
|
| return CA_LAYER_FAILED_STREAM_VIDEO_NOT_CANDIDATE;
|
| - ca_layer_overlay->contents_resource_id = resource_id;
|
| + ca_layer_overlay->resource_lock.reset(
|
| + new ResourceProvider::ScopedReadLockGpuMemoryBuffer(resource_provider,
|
| + quad->resource_id()));
|
| // TODO(ccameron): Support merging at least some basic transforms into the
|
| // layer transform.
|
| if (!quad->matrix.IsIdentity())
|
| @@ -68,9 +69,11 @@ CALayerResult FromSolidColorDrawQuad(const SolidColorDrawQuad* quad,
|
| CALayerResult FromTextureQuad(ResourceProvider* resource_provider,
|
| const TextureDrawQuad* quad,
|
| CALayerOverlay* ca_layer_overlay) {
|
| - unsigned resource_id = quad->resource_id();
|
| - if (!resource_provider->IsOverlayCandidate(resource_id))
|
| + if (!resource_provider->IsOverlayCandidate(quad->resource_id()))
|
| return CA_LAYER_FAILED_TEXTURE_NOT_CANDIDATE;
|
| + ca_layer_overlay->resource_lock.reset(
|
| + new ResourceProvider::ScopedReadLockGpuMemoryBuffer(resource_provider,
|
| + quad->resource_id()));
|
| if (quad->y_flipped) {
|
| // The anchor point is at the bottom-left corner of the CALayer. The
|
| // transformation that flips the contents of the layer without changing its
|
| @@ -80,7 +83,6 @@ CALayerResult FromTextureQuad(ResourceProvider* resource_provider,
|
| 0, ca_layer_overlay->bounds_rect.height(), 0);
|
| ca_layer_overlay->transform.preScale(1, -1, 1);
|
| }
|
| - ca_layer_overlay->contents_resource_id = resource_id;
|
| ca_layer_overlay->contents_rect =
|
| BoundingRect(quad->uv_top_left, quad->uv_bottom_right);
|
| ca_layer_overlay->background_color = quad->background_color;
|
| @@ -96,10 +98,11 @@ CALayerResult FromTextureQuad(ResourceProvider* resource_provider,
|
| CALayerResult FromTileQuad(ResourceProvider* resource_provider,
|
| const TileDrawQuad* quad,
|
| CALayerOverlay* ca_layer_overlay) {
|
| - unsigned resource_id = quad->resource_id();
|
| - if (!resource_provider->IsOverlayCandidate(resource_id))
|
| + if (!resource_provider->IsOverlayCandidate(quad->resource_id()))
|
| return CA_LAYER_FAILED_TILE_NOT_CANDIDATE;
|
| - ca_layer_overlay->contents_resource_id = resource_id;
|
| + ca_layer_overlay->resource_lock.reset(
|
| + new ResourceProvider::ScopedReadLockGpuMemoryBuffer(resource_provider,
|
| + quad->resource_id()));
|
| ca_layer_overlay->contents_rect = quad->tex_coord_rect;
|
| ca_layer_overlay->contents_rect.Scale(1.f / quad->texture_size.width(),
|
| 1.f / quad->texture_size.height());
|
| @@ -178,7 +181,9 @@ CALayerResult FromDrawQuad(ResourceProvider* resource_provider,
|
|
|
| CALayerOverlay::CALayerOverlay() : filter(GL_LINEAR) {}
|
|
|
| -CALayerOverlay::CALayerOverlay(const CALayerOverlay& other) = default;
|
| +CALayerOverlay::CALayerOverlay(CALayerOverlay&& other) = default;
|
| +
|
| +CALayerOverlay& CALayerOverlay::operator=(CALayerOverlay&& other) = default;
|
|
|
| CALayerOverlay::~CALayerOverlay() {}
|
|
|
| @@ -217,7 +222,7 @@ bool ProcessForCALayerOverlays(ResourceProvider* resource_provider,
|
| }
|
| }
|
|
|
| - ca_layer_overlays->push_back(ca_layer);
|
| + ca_layer_overlays->emplace_back(std::move(ca_layer));
|
| }
|
|
|
| UMA_HISTOGRAM_ENUMERATION("Compositing.Renderer.CALayerResult", result,
|
|
|