Index: cc/output/software_renderer.cc |
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc |
index d9898005e25f3d56fe7804a4daa4f79b3c64c997..1bd6fde0bbaba8b29e61f67c34a40b3acf2d52d1 100644 |
--- a/cc/output/software_renderer.cc |
+++ b/cc/output/software_renderer.cc |
@@ -67,6 +67,7 @@ SoftwareRenderer::SoftwareRenderer(RendererClient* client, |
: DirectRenderer(client, resource_provider), |
visible_(true), |
is_scissor_enabled_(false), |
+ is_viewport_changed_(true), |
output_surface_(output_surface), |
output_device_(output_surface->software_device()), |
current_canvas_(NULL) { |
@@ -81,8 +82,6 @@ SoftwareRenderer::SoftwareRenderer(RendererClient* client, |
if (Settings().compositor_frame_message && client_->HasImplThread()) |
capabilities_.using_swap_complete_callback = true; |
compositor_frame_.software_frame_data.reset(new SoftwareFrameData()); |
- |
- ViewportChanged(); |
} |
SoftwareRenderer::~SoftwareRenderer() {} |
@@ -92,11 +91,15 @@ const RendererCapabilities& SoftwareRenderer::Capabilities() const { |
} |
void SoftwareRenderer::ViewportChanged() { |
- output_device_->Resize(ViewportSize()); |
+ is_viewport_changed_ = true; |
} |
void SoftwareRenderer::BeginDrawingFrame(DrawingFrame* frame) { |
TRACE_EVENT0("cc", "SoftwareRenderer::BeginDrawingFrame"); |
+ if (is_viewport_changed_) { |
+ is_viewport_changed_ = false; |
+ output_device_->Resize(ViewportSize()); |
+ } |
root_canvas_ = output_device_->BeginPaint( |
gfx::ToEnclosingRect(frame->root_damage_rect)); |
} |