Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4166)

Unified Diff: cc/output/ca_layer_overlay.cc

Issue 2017473002: cc: Lock resources directly in CALayerOverlay (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add operator= Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/ca_layer_overlay.h ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
« no previous file with comments | « cc/output/ca_layer_overlay.h ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698