Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/renderer_host/compositor_impl_android.h" | 5 #include "content/browser/renderer_host/compositor_impl_android.h" |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
| 9 | 9 |
| 10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 382 base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env); | 382 base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env); |
| 383 window = ANativeWindow_fromSurface(env, surface); | 383 window = ANativeWindow_fromSurface(env, surface); |
| 384 } | 384 } |
| 385 if (window) { | 385 if (window) { |
| 386 SetWindowSurface(window); | 386 SetWindowSurface(window); |
| 387 ANativeWindow_release(window); | 387 ANativeWindow_release(window); |
| 388 RegisterViewSurface(surface_id_, j_surface.obj()); | 388 RegisterViewSurface(surface_id_, j_surface.obj()); |
| 389 } | 389 } |
| 390 } | 390 } |
| 391 | 391 |
| 392 void CompositorImpl::SetVisible(bool visible) { | 392 void CompositorImpl::CreateLayerTreeHost() { |
|
aelias_OOO_until_Jul13
2014/12/05 19:38:00
Please add "DCHECK(!host_);" at the beginning.
| |
| 393 if (!visible) { | |
| 394 DCHECK(host_); | |
| 395 // Look for any layers that were attached to the root for readback | |
| 396 // and are waiting for Composite() to happen. | |
| 397 bool readback_pending = false; | |
| 398 for (size_t i = 0; i < root_layer_->children().size(); ++i) { | |
| 399 if (root_layer_->children()[i]->HasCopyRequest()) { | |
| 400 readback_pending = true; | |
| 401 break; | |
| 402 } | |
| 403 } | |
| 404 if (readback_pending) { | |
| 405 ignore_schedule_composite_ = true; | |
| 406 host_->Composite(base::TimeTicks::Now()); | |
| 407 ignore_schedule_composite_ = false; | |
| 408 } | |
| 409 if (WillComposite()) | |
| 410 CancelComposite(); | |
| 411 ui_resource_provider_.SetLayerTreeHost(NULL); | |
| 412 host_.reset(); | |
| 413 display_client_.reset(); | |
| 414 if (current_composite_task_) { | |
| 415 current_composite_task_->Cancel(); | |
| 416 current_composite_task_.reset(); | |
| 417 } | |
| 418 } else if (!host_) { | |
| 419 DCHECK(!WillCompositeThisFrame()); | 393 DCHECK(!WillCompositeThisFrame()); |
| 420 needs_composite_ = false; | 394 needs_composite_ = false; |
| 421 defer_composite_for_gpu_channel_ = false; | 395 defer_composite_for_gpu_channel_ = false; |
| 422 pending_swapbuffers_ = 0; | 396 pending_swapbuffers_ = 0; |
| 423 cc::LayerTreeSettings settings; | 397 cc::LayerTreeSettings settings; |
| 424 settings.renderer_settings.refresh_rate = 60.0; | 398 settings.renderer_settings.refresh_rate = 60.0; |
| 425 settings.renderer_settings.allow_antialiasing = false; | 399 settings.renderer_settings.allow_antialiasing = false; |
| 426 settings.renderer_settings.highp_threshold_min = 2048; | 400 settings.renderer_settings.highp_threshold_min = 2048; |
| 427 settings.impl_side_painting = false; | 401 settings.impl_side_painting = false; |
| 428 settings.calculate_top_controls_position = false; | 402 settings.calculate_top_controls_position = false; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 443 settings, | 417 settings, |
| 444 base::MessageLoopProxy::current(), | 418 base::MessageLoopProxy::current(), |
| 445 nullptr); | 419 nullptr); |
| 446 host_->SetRootLayer(root_layer_); | 420 host_->SetRootLayer(root_layer_); |
| 447 | 421 |
| 448 host_->SetVisible(true); | 422 host_->SetVisible(true); |
| 449 host_->SetLayerTreeHostClientReady(); | 423 host_->SetLayerTreeHostClientReady(); |
| 450 host_->SetViewportSize(size_); | 424 host_->SetViewportSize(size_); |
| 451 host_->set_has_transparent_background(has_transparent_background_); | 425 host_->set_has_transparent_background(has_transparent_background_); |
| 452 host_->SetDeviceScaleFactor(device_scale_factor_); | 426 host_->SetDeviceScaleFactor(device_scale_factor_); |
| 427 } | |
| 428 | |
| 429 void CompositorImpl::SetVisible(bool visible) { | |
| 430 if (!visible) { | |
| 431 DCHECK(host_); | |
| 432 // Look for any layers that were attached to the root for readback | |
| 433 // and are waiting for Composite() to happen. | |
| 434 bool readback_pending = false; | |
| 435 for (size_t i = 0; i < root_layer_->children().size(); ++i) { | |
| 436 if (root_layer_->children()[i]->HasCopyRequest()) { | |
| 437 readback_pending = true; | |
| 438 break; | |
| 439 } | |
| 440 } | |
| 441 if (readback_pending) { | |
| 442 ignore_schedule_composite_ = true; | |
| 443 host_->Composite(base::TimeTicks::Now()); | |
| 444 ignore_schedule_composite_ = false; | |
| 445 } | |
| 446 if (WillComposite()) | |
| 447 CancelComposite(); | |
| 448 ui_resource_provider_.SetLayerTreeHost(NULL); | |
| 449 host_.reset(); | |
| 450 display_client_.reset(); | |
| 451 if (current_composite_task_) { | |
| 452 current_composite_task_->Cancel(); | |
| 453 current_composite_task_.reset(); | |
| 454 } | |
| 455 } else if (!host_) { | |
| 456 CreateLayerTreeHost(); | |
| 453 ui_resource_provider_.SetLayerTreeHost(host_.get()); | 457 ui_resource_provider_.SetLayerTreeHost(host_.get()); |
| 454 } | 458 } |
| 455 } | 459 } |
| 456 | 460 |
| 457 void CompositorImpl::setDeviceScaleFactor(float factor) { | 461 void CompositorImpl::setDeviceScaleFactor(float factor) { |
| 458 device_scale_factor_ = factor; | 462 device_scale_factor_ = factor; |
| 459 if (host_) | 463 if (host_) |
| 460 host_->SetDeviceScaleFactor(factor); | 464 host_->SetDeviceScaleFactor(factor); |
| 461 } | 465 } |
| 462 | 466 |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 675 } | 679 } |
| 676 | 680 |
| 677 void CompositorImpl::SetNeedsAnimate() { | 681 void CompositorImpl::SetNeedsAnimate() { |
| 678 if (!host_) | 682 if (!host_) |
| 679 return; | 683 return; |
| 680 | 684 |
| 681 host_->SetNeedsAnimate(); | 685 host_->SetNeedsAnimate(); |
| 682 } | 686 } |
| 683 | 687 |
| 684 } // namespace content | 688 } // namespace content |
| OLD | NEW |