| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/surfaces/surface_aggregator.h" | 5 #include "cc/surfaces/surface_aggregator.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 } else { | 146 } else { |
| 147 return it->second; | 147 return it->second; |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 | 150 |
| 151 gfx::Rect SurfaceAggregator::DamageRectForSurface( | 151 gfx::Rect SurfaceAggregator::DamageRectForSurface( |
| 152 const Surface* surface, | 152 const Surface* surface, |
| 153 const RenderPass& source, | 153 const RenderPass& source, |
| 154 const gfx::Rect& full_rect) const { | 154 const gfx::Rect& full_rect) const { |
| 155 auto it = previous_contained_surfaces_.find(surface->surface_id()); | 155 auto it = previous_contained_surfaces_.find(surface->surface_id()); |
| 156 if (it == previous_contained_surfaces_.end()) | 156 if (it != previous_contained_surfaces_.end()) { |
| 157 return full_rect; | 157 int previous_index = it->second; |
| 158 if (previous_index == surface->frame_index()) |
| 159 return gfx::Rect(); |
| 160 } |
| 161 SurfaceId previous_surface_id = surface->previous_frame_surface_id(); |
| 158 | 162 |
| 159 int previous_index = it->second; | 163 if (surface->surface_id() != previous_surface_id) { |
| 160 if (previous_index == surface->frame_index()) | 164 it = previous_contained_surfaces_.find(previous_surface_id); |
| 161 return gfx::Rect(); | 165 } |
| 162 if (previous_index == surface->frame_index() - 1) | 166 if (it != previous_contained_surfaces_.end()) { |
| 163 return source.damage_rect; | 167 int previous_index = it->second; |
| 168 if (previous_index == surface->frame_index() - 1) |
| 169 return source.damage_rect; |
| 170 } |
| 171 |
| 164 return full_rect; | 172 return full_rect; |
| 165 } | 173 } |
| 166 | 174 |
| 167 void SurfaceAggregator::HandleSurfaceQuad( | 175 void SurfaceAggregator::HandleSurfaceQuad( |
| 168 const SurfaceDrawQuad* surface_quad, | 176 const SurfaceDrawQuad* surface_quad, |
| 169 const gfx::Transform& target_transform, | 177 const gfx::Transform& target_transform, |
| 170 const ClipData& clip_rect, | 178 const ClipData& clip_rect, |
| 171 RenderPass* dest_pass) { | 179 RenderPass* dest_pass) { |
| 172 SurfaceId surface_id = surface_quad->surface_id; | 180 SurfaceId surface_id = surface_quad->surface_id; |
| 173 // If this surface's id is already in our referenced set then it creates | 181 // If this surface's id is already in our referenced set then it creates |
| (...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 | 822 |
| 815 void SurfaceAggregator::SetFullDamageForSurface(SurfaceId surface_id) { | 823 void SurfaceAggregator::SetFullDamageForSurface(SurfaceId surface_id) { |
| 816 auto it = previous_contained_surfaces_.find(surface_id); | 824 auto it = previous_contained_surfaces_.find(surface_id); |
| 817 if (it == previous_contained_surfaces_.end()) | 825 if (it == previous_contained_surfaces_.end()) |
| 818 return; | 826 return; |
| 819 // Set the last drawn index as 0 to ensure full damage next time it's drawn. | 827 // Set the last drawn index as 0 to ensure full damage next time it's drawn. |
| 820 it->second = 0; | 828 it->second = 0; |
| 821 } | 829 } |
| 822 | 830 |
| 823 } // namespace cc | 831 } // namespace cc |
| OLD | NEW |