Index: cc/output/gl_renderer.cc |
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
index 4519af374cf4d784be4a5c63beaa0f81c8746a6a..558b74d7e608e94a50e3f47fa38f18a8fa5cbe26 100644 |
--- a/cc/output/gl_renderer.cc |
+++ b/cc/output/gl_renderer.cc |
@@ -1828,6 +1828,8 @@ void GLRenderer::FinishDrawingFrame(DrawingFrame* frame) { |
if (Settings().compositor_frame_message) { |
CompositorFrame compositor_frame; |
compositor_frame.metadata = client_->MakeCompositorFrameMetadata(); |
+ compositor_frame.gl_frame_data.reset(new GLFrameData()); |
+ compositor_frame.gl_frame_data->damage_rect = GetFrameDamage(); |
output_surface_->SendFrameToParentCompositor(&compositor_frame); |
} |
} |
@@ -1959,15 +1961,7 @@ void GLRenderer::SwapBuffers(const ui::LatencyInfo& latency_info) { |
if (capabilities_.using_partial_swap && client_->AllowPartialSwap()) { |
// If supported, we can save significant bandwidth by only swapping the |
// damaged/scissored region (clamped to the viewport) |
- swap_buffer_rect_.Intersect(client_->DeviceViewport()); |
- int flipped_y_pos_of_rect_bottom = |
- client_->DeviceViewport().height() - swap_buffer_rect_.y() - |
- swap_buffer_rect_.height(); |
- output_surface_->PostSubBuffer(gfx::Rect(swap_buffer_rect_.x(), |
- flipped_y_pos_of_rect_bottom, |
- swap_buffer_rect_.width(), |
- swap_buffer_rect_.height()), |
- latency_info); |
+ output_surface_->PostSubBuffer(GetFrameDamage(), latency_info); |
aelias_OOO_until_Jul13
2013/06/10 22:20:12
To be clearer about what I was asking for earlier,
aelias_OOO_until_Jul13
2013/06/10 23:20:20
On second thought, since this doesn't truly need t
|
} else { |
output_surface_->SwapBuffers(latency_info); |
} |
@@ -2904,4 +2898,13 @@ bool GLRenderer::IsContextLost() { |
return (context_->getGraphicsResetStatusARB() != GL_NO_ERROR); |
} |
+gfx::Rect GLRenderer::GetFrameDamage() { |
+ gfx::Rect frame_damage = swap_buffer_rect_; |
+ frame_damage.Intersect(client_->DeviceViewport()); |
+ int flipped_y_pos_of_rect_bottom = client_->DeviceViewport().height() - |
+ frame_damage.y() - frame_damage.height(); |
+ frame_damage.set_y(flipped_y_pos_of_rect_bottom); |
+ return frame_damage; |
+} |
+ |
} // namespace cc |