Index: content/browser/renderer_host/compositor_impl_android.cc |
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc |
index ed4de23ca992f1936e0b39f329a463fe73535455..2b1afcfd4786fc2b077ebb9ab388cfa33594a35d 100644 |
--- a/content/browser/renderer_host/compositor_impl_android.cc |
+++ b/content/browser/renderer_host/compositor_impl_android.cc |
@@ -389,33 +389,7 @@ void CompositorImpl::SetSurface(jobject surface) { |
} |
} |
-void CompositorImpl::SetVisible(bool visible) { |
- if (!visible) { |
- DCHECK(host_); |
- // Look for any layers that were attached to the root for readback |
- // and are waiting for Composite() to happen. |
- bool readback_pending = false; |
- for (size_t i = 0; i < root_layer_->children().size(); ++i) { |
- if (root_layer_->children()[i]->HasCopyRequest()) { |
- readback_pending = true; |
- break; |
- } |
- } |
- if (readback_pending) { |
- ignore_schedule_composite_ = true; |
- host_->Composite(base::TimeTicks::Now()); |
- ignore_schedule_composite_ = false; |
- } |
- if (WillComposite()) |
- CancelComposite(); |
- ui_resource_provider_.SetLayerTreeHost(NULL); |
- host_.reset(); |
- display_client_.reset(); |
- if (current_composite_task_) { |
- current_composite_task_->Cancel(); |
- current_composite_task_.reset(); |
- } |
- } else if (!host_) { |
+void CompositorImpl::CreateLayerTreeHost() { |
aelias_OOO_until_Jul13
2014/12/05 19:38:00
Please add "DCHECK(!host_);" at the beginning.
|
DCHECK(!WillCompositeThisFrame()); |
needs_composite_ = false; |
defer_composite_for_gpu_channel_ = false; |
@@ -450,6 +424,36 @@ void CompositorImpl::SetVisible(bool visible) { |
host_->SetViewportSize(size_); |
host_->set_has_transparent_background(has_transparent_background_); |
host_->SetDeviceScaleFactor(device_scale_factor_); |
+} |
+ |
+void CompositorImpl::SetVisible(bool visible) { |
+ if (!visible) { |
+ DCHECK(host_); |
+ // Look for any layers that were attached to the root for readback |
+ // and are waiting for Composite() to happen. |
+ bool readback_pending = false; |
+ for (size_t i = 0; i < root_layer_->children().size(); ++i) { |
+ if (root_layer_->children()[i]->HasCopyRequest()) { |
+ readback_pending = true; |
+ break; |
+ } |
+ } |
+ if (readback_pending) { |
+ ignore_schedule_composite_ = true; |
+ host_->Composite(base::TimeTicks::Now()); |
+ ignore_schedule_composite_ = false; |
+ } |
+ if (WillComposite()) |
+ CancelComposite(); |
+ ui_resource_provider_.SetLayerTreeHost(NULL); |
+ host_.reset(); |
+ display_client_.reset(); |
+ if (current_composite_task_) { |
+ current_composite_task_->Cancel(); |
+ current_composite_task_.reset(); |
+ } |
+ } else if (!host_) { |
+ CreateLayerTreeHost(); |
ui_resource_provider_.SetLayerTreeHost(host_.get()); |
} |
} |