Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: content/browser/renderer_host/compositor_impl_android.cc

Issue 2136373002: Make WindowAndroid a ViewAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@view3
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include <stdint.h> 9 #include <stdint.h>
10 #include <unordered_set> 10 #include <unordered_set>
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 g_shared_vulkan_context_provider_android_.Pointer(); 358 g_shared_vulkan_context_provider_android_.Pointer();
359 if (!*context_provider) 359 if (!*context_provider)
360 *context_provider = cc::VulkanInProcessContextProvider::Create(); 360 *context_provider = cc::VulkanInProcessContextProvider::Create();
361 return *context_provider; 361 return *context_provider;
362 } 362 }
363 return nullptr; 363 return nullptr;
364 } 364 }
365 365
366 CompositorImpl::CompositorImpl(CompositorClient* client, 366 CompositorImpl::CompositorImpl(CompositorClient* client,
367 gfx::NativeWindow root_window) 367 gfx::NativeWindow root_window)
368 : root_layer_(cc::Layer::Create()), 368 : surface_id_allocator_(CreateSurfaceIdAllocator()),
369 surface_id_allocator_(CreateSurfaceIdAllocator()),
370 resource_manager_(root_window), 369 resource_manager_(root_window),
371 has_transparent_background_(false), 370 has_transparent_background_(false),
372 device_scale_factor_(1), 371 device_scale_factor_(1),
373 window_(NULL), 372 window_(NULL),
374 surface_handle_(gpu::kNullSurfaceHandle), 373 surface_handle_(gpu::kNullSurfaceHandle),
375 client_(client), 374 client_(client),
376 root_window_(root_window), 375 root_window_(root_window),
377 needs_animate_(false), 376 needs_animate_(false),
378 pending_swapbuffers_(0U), 377 pending_swapbuffers_(0U),
379 num_successive_context_creation_failures_(0), 378 num_successive_context_creation_failures_(0),
380 output_surface_request_pending_(false), 379 output_surface_request_pending_(false),
381 needs_begin_frames_(false), 380 needs_begin_frames_(false),
382 weak_factory_(this) { 381 weak_factory_(this) {
383 DCHECK(client); 382 DCHECK(client);
384 DCHECK(root_window); 383 DCHECK(root_window);
384 root_window->SetLayer(cc::Layer::Create());
385 root_window->AttachCompositor(this); 385 root_window->AttachCompositor(this);
386 CreateLayerTreeHost(); 386 CreateLayerTreeHost();
387 resource_manager_.Init(host_.get()); 387 resource_manager_.Init(host_.get());
388 } 388 }
389 389
390 CompositorImpl::~CompositorImpl() { 390 CompositorImpl::~CompositorImpl() {
391 root_window_->DetachCompositor(); 391 root_window_->DetachCompositor();
392 root_window_->SetLayer(nullptr);
392 // Clean-up any surface references. 393 // Clean-up any surface references.
393 SetSurface(NULL); 394 SetSurface(NULL);
394 } 395 }
395 396
396 ui::UIResourceProvider& CompositorImpl::GetUIResourceProvider() { 397 ui::UIResourceProvider& CompositorImpl::GetUIResourceProvider() {
397 return *this; 398 return *this;
398 } 399 }
399 400
400 ui::ResourceManager& CompositorImpl::GetResourceManager() { 401 ui::ResourceManager& CompositorImpl::GetResourceManager() {
401 return resource_manager_; 402 return resource_manager_;
402 } 403 }
403 404
404 void CompositorImpl::SetRootLayer(scoped_refptr<cc::Layer> root_layer) { 405 void CompositorImpl::SetRootLayer(scoped_refptr<cc::Layer> root_layer) {
405 if (subroot_layer_.get()) { 406 if (subroot_layer_.get()) {
406 subroot_layer_->RemoveFromParent(); 407 subroot_layer_->RemoveFromParent();
407 subroot_layer_ = NULL; 408 subroot_layer_ = NULL;
408 } 409 }
409 if (root_layer.get()) { 410 if (root_window_->GetLayer()) {
410 subroot_layer_ = root_layer; 411 subroot_layer_ = root_window_->GetLayer();
411 root_layer_->AddChild(root_layer); 412 root_window_->GetLayer()->AddChild(root_layer);
412 } 413 }
413 } 414 }
414 415
415 void CompositorImpl::SetSurface(jobject surface) { 416 void CompositorImpl::SetSurface(jobject surface) {
416 JNIEnv* env = base::android::AttachCurrentThread(); 417 JNIEnv* env = base::android::AttachCurrentThread();
417 base::android::ScopedJavaLocalRef<jobject> j_surface(env, surface); 418 base::android::ScopedJavaLocalRef<jobject> j_surface(env, surface);
418 419
419 GpuSurfaceTracker* tracker = GpuSurfaceTracker::Get(); 420 GpuSurfaceTracker* tracker = GpuSurfaceTracker::Get();
420 421
421 if (window_) { 422 if (window_) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 cc::LayerTreeHost::InitParams params; 468 cc::LayerTreeHost::InitParams params;
468 params.client = this; 469 params.client = this;
469 params.shared_bitmap_manager = HostSharedBitmapManager::current(); 470 params.shared_bitmap_manager = HostSharedBitmapManager::current();
470 params.gpu_memory_buffer_manager = BrowserGpuMemoryBufferManager::current(); 471 params.gpu_memory_buffer_manager = BrowserGpuMemoryBufferManager::current();
471 params.task_graph_runner = g_task_graph_runner.Pointer(); 472 params.task_graph_runner = g_task_graph_runner.Pointer();
472 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); 473 params.main_task_runner = base::ThreadTaskRunnerHandle::Get();
473 params.settings = &settings; 474 params.settings = &settings;
474 params.animation_host = cc::AnimationHost::CreateMainInstance(); 475 params.animation_host = cc::AnimationHost::CreateMainInstance();
475 host_ = cc::LayerTreeHost::CreateSingleThreaded(this, &params); 476 host_ = cc::LayerTreeHost::CreateSingleThreaded(this, &params);
476 DCHECK(!host_->visible()); 477 DCHECK(!host_->visible());
477 host_->SetRootLayer(root_layer_); 478 host_->SetRootLayer(root_window_->GetLayer());
478 host_->set_surface_id_namespace(surface_id_allocator_->id_namespace()); 479 host_->set_surface_id_namespace(surface_id_allocator_->id_namespace());
479 host_->SetViewportSize(size_); 480 host_->SetViewportSize(size_);
480 host_->set_has_transparent_background(has_transparent_background_); 481 host_->set_has_transparent_background(has_transparent_background_);
481 host_->SetDeviceScaleFactor(device_scale_factor_); 482 host_->SetDeviceScaleFactor(device_scale_factor_);
482 483
483 if (needs_animate_) 484 if (needs_animate_)
484 host_->SetNeedsAnimate(); 485 host_->SetNeedsAnimate();
485 } 486 }
486 487
487 void CompositorImpl::SetVisible(bool visible) { 488 void CompositorImpl::SetVisible(bool visible) {
(...skipping 21 matching lines...) Expand all
509 510
510 void CompositorImpl::SetWindowBounds(const gfx::Size& size) { 511 void CompositorImpl::SetWindowBounds(const gfx::Size& size) {
511 if (size_ == size) 512 if (size_ == size)
512 return; 513 return;
513 514
514 size_ = size; 515 size_ = size;
515 if (host_) 516 if (host_)
516 host_->SetViewportSize(size); 517 host_->SetViewportSize(size);
517 if (display_) 518 if (display_)
518 display_->Resize(size); 519 display_->Resize(size);
519 root_layer_->SetBounds(size); 520 root_window_->GetLayer()->SetBounds(size);
520 } 521 }
521 522
522 void CompositorImpl::SetHasTransparentBackground(bool flag) { 523 void CompositorImpl::SetHasTransparentBackground(bool flag) {
523 has_transparent_background_ = flag; 524 has_transparent_background_ = flag;
524 if (host_) 525 if (host_)
525 host_->set_has_transparent_background(flag); 526 host_->set_has_transparent_background(flag);
526 } 527 }
527 528
528 void CompositorImpl::SetNeedsComposite() { 529 void CompositorImpl::SetNeedsComposite() {
529 if (!host_->visible()) 530 if (!host_->visible())
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 host_->SetNeedsCommit(); 774 host_->SetNeedsCommit();
774 client_->OnSwapBuffersCompleted(0); 775 client_->OnSwapBuffersCompleted(0);
775 } 776 }
776 777
777 void CompositorImpl::DidCommit() { 778 void CompositorImpl::DidCommit() {
778 root_window_->OnCompositingDidCommit(); 779 root_window_->OnCompositingDidCommit();
779 } 780 }
780 781
781 void CompositorImpl::RequestCopyOfOutputOnRootLayer( 782 void CompositorImpl::RequestCopyOfOutputOnRootLayer(
782 std::unique_ptr<cc::CopyOutputRequest> request) { 783 std::unique_ptr<cc::CopyOutputRequest> request) {
783 root_layer_->RequestCopyOfOutput(std::move(request)); 784 root_window_->GetLayer()->RequestCopyOfOutput(std::move(request));
784 } 785 }
785 786
786 void CompositorImpl::OnVSync(base::TimeTicks frame_time, 787 void CompositorImpl::OnVSync(base::TimeTicks frame_time,
787 base::TimeDelta vsync_period) { 788 base::TimeDelta vsync_period) {
788 FOR_EACH_OBSERVER(VSyncObserver, observer_list_, 789 FOR_EACH_OBSERVER(VSyncObserver, observer_list_,
789 OnVSync(frame_time, vsync_period)); 790 OnVSync(frame_time, vsync_period));
790 if (needs_begin_frames_) 791 if (needs_begin_frames_)
791 root_window_->RequestVSyncUpdate(); 792 root_window_->RequestVSyncUpdate();
792 } 793 }
793 794
794 void CompositorImpl::OnNeedsBeginFramesChange(bool needs_begin_frames) { 795 void CompositorImpl::OnNeedsBeginFramesChange(bool needs_begin_frames) {
795 if (needs_begin_frames_ == needs_begin_frames) 796 if (needs_begin_frames_ == needs_begin_frames)
796 return; 797 return;
797 798
798 needs_begin_frames_ = needs_begin_frames; 799 needs_begin_frames_ = needs_begin_frames;
799 if (needs_begin_frames_) 800 if (needs_begin_frames_)
800 root_window_->RequestVSyncUpdate(); 801 root_window_->RequestVSyncUpdate();
801 } 802 }
802 803
803 void CompositorImpl::SetNeedsAnimate() { 804 void CompositorImpl::SetNeedsAnimate() {
804 needs_animate_ = true; 805 needs_animate_ = true;
805 if (!host_->visible()) 806 if (!host_->visible())
806 return; 807 return;
807 808
808 TRACE_EVENT0("compositor", "Compositor::SetNeedsAnimate"); 809 TRACE_EVENT0("compositor", "Compositor::SetNeedsAnimate");
809 host_->SetNeedsAnimate(); 810 host_->SetNeedsAnimate();
810 } 811 }
811 812
812 } // namespace content 813 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698