Commit 926cd142 authored by Maggie Chen's avatar Maggie Chen Committed by Commit Bot

Merge the code that calls AddSurfaceDamageToDamageList twice.

For the case of emitting a new surface in SA HandleSurfaceQuad(),
We only need to call AddSurfaceDamageToDamageList once.

Bug: 1117235
Change-Id: I3ac337aaf0a7876790180636288e60b3c1471963
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2454569Reviewed-by: default avatarweiliangc <weiliangc@chromium.org>
Commit-Queue: Maggie Chen <magchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816812}
parent 7caac4f0
......@@ -390,12 +390,26 @@ void SurfaceAggregator::HandleSurfaceQuad(
bool* damage_rect_in_quad_space_valid,
const RoundedCornerInfo& rounded_corner_info) {
SurfaceId primary_surface_id = surface_quad->surface_range.end();
Surface* latest_surface =
manager_->GetLatestInFlightSurface(surface_quad->surface_range);
// If a new surface is going to be emitted, add the surface_quad rect to
// |surface_damage_rect_list_| for overlays. The whole quad is considered
// damaged.
if (needs_surface_damage_rect_list_ &&
(!latest_surface || !latest_surface->HasActiveFrame() ||
(latest_surface->surface_id() != primary_surface_id))) {
gfx::Transform transform(
target_transform,
surface_quad->shared_quad_state->quad_to_target_transform);
transform.ConcatTransform(dest_pass->transform_to_root_target);
AddSurfaceDamageToDamageList(surface_quad->rect, target_transform,
clip_rect);
}
// If there's no fallback surface ID available, then simply emit a
// SolidColorDrawQuad with the provided default background color. This
// can happen after a Viz process crash.
Surface* latest_surface =
manager_->GetLatestInFlightSurface(surface_quad->surface_range);
if (!latest_surface || !latest_surface->HasActiveFrame()) {
EmitDefaultBackgroundColorQuad(surface_quad, target_transform, clip_rect,
dest_pass, rounded_corner_info);
......@@ -421,16 +435,6 @@ void SurfaceAggregator::HandleSurfaceQuad(
dest_pass, rounded_corner_info);
}
if (needs_surface_damage_rect_list_ &&
latest_surface->surface_id() != primary_surface_id) {
gfx::Transform transform(
target_transform,
surface_quad->shared_quad_state->quad_to_target_transform);
transform.ConcatTransform(dest_pass->transform_to_root_target);
AddSurfaceDamageToDamageList(surface_quad->rect, target_transform,
clip_rect);
}
EmitSurfaceContent(latest_surface, parent_device_scale_factor, surface_quad,
target_transform, clip_rect, dest_pass, ignore_undamaged,
damage_rect_in_quad_space, damage_rect_in_quad_space_valid,
......@@ -719,14 +723,6 @@ void SurfaceAggregator::EmitDefaultBackgroundColorQuad(
dest_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
solid_color_quad->SetNew(shared_quad_state, surface_quad->rect,
surface_quad->visible_rect, background_color, false);
if (needs_surface_damage_rect_list_) {
gfx::Transform transform(
target_transform,
surface_quad->shared_quad_state->quad_to_target_transform);
transform.ConcatTransform(dest_pass->transform_to_root_target);
AddSurfaceDamageToDamageList(surface_quad->rect, transform, clip_rect);
}
}
void SurfaceAggregator::EmitGutterQuadsIfNecessary(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment