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

Unified Diff: cc/layers/tiled_layer.cc

Issue 21839004: cc: Push valid property values when CalcDrawProps skips layer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: pushpaintprops: Call SavePaintProps when needed in tests Created 7 years, 4 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/layers/texture_layer.cc ('k') | cc/layers/video_layer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/tiled_layer.cc
diff --git a/cc/layers/tiled_layer.cc b/cc/layers/tiled_layer.cc
index 753cdfa2862e1b5140ca692aba9825c352d7169d..bac12f0d422768a71bd470d09787dbbf6ffe5edd 100644
--- a/cc/layers/tiled_layer.cc
+++ b/cc/layers/tiled_layer.cc
@@ -327,7 +327,7 @@ bool TiledLayer::UpdateTiles(int left,
int bottom,
ResourceUpdateQueue* queue,
const OcclusionTracker* occlusion,
- bool* did_paint) {
+ bool* updated) {
CreateUpdaterIfNeeded();
bool ignore_occlusions = !occlusion;
@@ -345,7 +345,7 @@ bool TiledLayer::UpdateTiles(int left,
if (paint_rect.IsEmpty())
return true;
- *did_paint = true;
+ *updated = true;
UpdateTileTextures(
paint_rect, left, top, right, bottom, queue, occlusion);
return true;
@@ -730,19 +730,20 @@ void TiledLayer::UpdateScrollPrediction() {
bool TiledLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker* occlusion) {
DCHECK(!skips_draw_ && !failed_update_); // Did ResetUpdateState get skipped?
+
+ bool updated = false;
+
{
base::AutoReset<bool> ignore_set_needs_commit(&ignore_set_needs_commit_,
true);
- ContentsScalingLayer::Update(queue, occlusion);
+ updated |= ContentsScalingLayer::Update(queue, occlusion);
UpdateBounds();
}
if (tiler_->has_empty_bounds() || !DrawsContent())
return false;
- bool did_paint = false;
-
// Animation pre-paint. If the layer is small, try to paint it all
// immediately whether or not it is occluded, to avoid paint/upload
// hiccups while it is animating.
@@ -753,16 +754,16 @@ bool TiledLayer::Update(ResourceUpdateQueue* queue,
&top,
&right,
&bottom);
- UpdateTiles(left, top, right, bottom, queue, NULL, &did_paint);
- if (did_paint)
- return did_paint;
+ UpdateTiles(left, top, right, bottom, queue, NULL, &updated);
+ if (updated)
+ return updated;
// This was an attempt to paint the entire layer so if we fail it's okay,
// just fallback on painting visible etc. below.
failed_update_ = false;
}
if (predicted_visible_rect_.IsEmpty())
- return did_paint;
+ return updated;
// Visible painting. First occlude visible tiles and paint the non-occluded
// tiles.
@@ -771,22 +772,22 @@ bool TiledLayer::Update(ResourceUpdateQueue* queue,
predicted_visible_rect_, &left, &top, &right, &bottom);
MarkOcclusionsAndRequestTextures(left, top, right, bottom, occlusion);
skips_draw_ = !UpdateTiles(
- left, top, right, bottom, queue, occlusion, &did_paint);
+ left, top, right, bottom, queue, occlusion, &updated);
if (skips_draw_)
tiler_->reset();
- if (skips_draw_ || did_paint)
+ if (skips_draw_ || updated)
return true;
// If we have already painting everything visible. Do some pre-painting while
// idle.
gfx::Rect idle_paint_content_rect = IdlePaintRect();
if (idle_paint_content_rect.IsEmpty())
- return did_paint;
+ return updated;
// Prepaint anything that was occluded but inside the layer's visible region.
- if (!UpdateTiles(left, top, right, bottom, queue, NULL, &did_paint) ||
- did_paint)
- return did_paint;
+ if (!UpdateTiles(left, top, right, bottom, queue, NULL, &updated) ||
+ updated)
+ return updated;
int prepaint_left, prepaint_top, prepaint_right, prepaint_bottom;
tiler_->ContentRectToTileIndices(idle_paint_content_rect,
@@ -814,40 +815,40 @@ bool TiledLayer::Update(ResourceUpdateQueue* queue,
while (bottom < prepaint_bottom) {
++bottom;
if (!UpdateTiles(
- left, bottom, right, bottom, queue, NULL, &did_paint) ||
- did_paint)
- return did_paint;
+ left, bottom, right, bottom, queue, NULL, &updated) ||
+ updated)
+ return updated;
}
}
if (deltas[i].y() < 0) {
while (top > prepaint_top) {
--top;
if (!UpdateTiles(
- left, top, right, top, queue, NULL, &did_paint) ||
- did_paint)
- return did_paint;
+ left, top, right, top, queue, NULL, &updated) ||
+ updated)
+ return updated;
}
}
if (deltas[i].x() < 0) {
while (left > prepaint_left) {
--left;
if (!UpdateTiles(
- left, top, left, bottom, queue, NULL, &did_paint) ||
- did_paint)
- return did_paint;
+ left, top, left, bottom, queue, NULL, &updated) ||
+ updated)
+ return updated;
}
}
if (deltas[i].x() > 0) {
while (right < prepaint_right) {
++right;
if (!UpdateTiles(
- right, top, right, bottom, queue, NULL, &did_paint) ||
- did_paint)
- return did_paint;
+ right, top, right, bottom, queue, NULL, &updated) ||
+ updated)
+ return updated;
}
}
}
- return did_paint;
+ return updated;
}
bool TiledLayer::NeedsIdlePaint() {
« no previous file with comments | « cc/layers/texture_layer.cc ('k') | cc/layers/video_layer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698