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

Side by Side Diff: content/browser/compositor/delegated_frame_host.cc

Issue 1016033006: Enable BeginFrame scheduling on aura (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/compositor/delegated_frame_host.h" 5 #include "content/browser/compositor/delegated_frame_host.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "cc/output/compositor_frame.h" 9 #include "cc/output/compositor_frame.h"
10 #include "cc/output/compositor_frame_ack.h" 10 #include "cc/output/compositor_frame_ack.h"
(...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 can_lock_compositor_ = NO_PENDING_RENDERER_FRAME; 871 can_lock_compositor_ = NO_PENDING_RENDERER_FRAME;
872 } 872 }
873 } 873 }
874 874
875 void DelegatedFrameHost::OnCompositingShuttingDown(ui::Compositor* compositor) { 875 void DelegatedFrameHost::OnCompositingShuttingDown(ui::Compositor* compositor) {
876 DCHECK_EQ(compositor, compositor_); 876 DCHECK_EQ(compositor, compositor_);
877 ResetCompositor(); 877 ResetCompositor();
878 DCHECK(!compositor_); 878 DCHECK(!compositor_);
879 } 879 }
880 880
881 void DelegatedFrameHost::OnUpdateVSyncParameters( 881 void DelegatedFrameHost::SetVSyncParameters(base::TimeTicks timebase,
882 base::TimeTicks timebase, 882 base::TimeDelta interval) {
883 base::TimeDelta interval) {
884 vsync_timebase_ = timebase; 883 vsync_timebase_ = timebase;
885 vsync_interval_ = interval; 884 vsync_interval_ = interval;
886 if (client_->DelegatedFrameHostIsVisible())
887 client_->DelegatedFrameHostUpdateVSyncParameters(timebase, interval);
888 } 885 }
889 886
890 //////////////////////////////////////////////////////////////////////////////// 887 ////////////////////////////////////////////////////////////////////////////////
891 // DelegatedFrameHost, ImageTransportFactoryObserver implementation: 888 // DelegatedFrameHost, ImageTransportFactoryObserver implementation:
892 889
893 void DelegatedFrameHost::OnLostResources() { 890 void DelegatedFrameHost::OnLostResources() {
894 if (frame_provider_.get() || !surface_id_.is_null()) 891 if (frame_provider_.get() || !surface_id_.is_null())
895 EvictDelegatedFrame(); 892 EvictDelegatedFrame();
896 idle_frame_subscriber_textures_.clear(); 893 idle_frame_subscriber_textures_.clear();
897 yuv_readback_pipeline_.reset(); 894 yuv_readback_pipeline_.reset();
898 895
899 client_->DelegatedFrameHostOnLostCompositorResources(); 896 client_->DelegatedFrameHostOnLostCompositorResources();
900 } 897 }
901 898
902 //////////////////////////////////////////////////////////////////////////////// 899 ////////////////////////////////////////////////////////////////////////////////
903 // DelegatedFrameHost, private: 900 // DelegatedFrameHost, private:
904 901
905 DelegatedFrameHost::~DelegatedFrameHost() { 902 DelegatedFrameHost::~DelegatedFrameHost() {
906 DCHECK(!compositor_); 903 DCHECK(!compositor_);
907 ImageTransportFactory::GetInstance()->RemoveObserver(this); 904 ImageTransportFactory::GetInstance()->RemoveObserver(this);
908 905
909 if (!surface_id_.is_null()) 906 if (!surface_id_.is_null())
910 surface_factory_->Destroy(surface_id_); 907 surface_factory_->Destroy(surface_id_);
911 if (resource_collection_.get()) 908 if (resource_collection_.get())
912 resource_collection_->SetClient(NULL); 909 resource_collection_->SetClient(NULL);
913
914 DCHECK(!vsync_manager_.get());
915 } 910 }
916 911
917 void DelegatedFrameHost::RunOnCommitCallbacks() { 912 void DelegatedFrameHost::RunOnCommitCallbacks() {
918 for (std::vector<base::Closure>::const_iterator 913 for (std::vector<base::Closure>::const_iterator
919 it = on_compositing_did_commit_callbacks_.begin(); 914 it = on_compositing_did_commit_callbacks_.begin();
920 it != on_compositing_did_commit_callbacks_.end(); ++it) { 915 it != on_compositing_did_commit_callbacks_.end(); ++it) {
921 it->Run(); 916 it->Run();
922 } 917 }
923 on_compositing_did_commit_callbacks_.clear(); 918 on_compositing_did_commit_callbacks_.clear();
924 } 919 }
925 920
926 void DelegatedFrameHost::AddOnCommitCallbackAndDisableLocks( 921 void DelegatedFrameHost::AddOnCommitCallbackAndDisableLocks(
927 const base::Closure& callback) { 922 const base::Closure& callback) {
928 DCHECK(compositor_); 923 DCHECK(compositor_);
929 924
930 can_lock_compositor_ = NO_PENDING_COMMIT; 925 can_lock_compositor_ = NO_PENDING_COMMIT;
931 if (!callback.is_null()) 926 if (!callback.is_null())
932 on_compositing_did_commit_callbacks_.push_back(callback); 927 on_compositing_did_commit_callbacks_.push_back(callback);
933 } 928 }
934 929
935 void DelegatedFrameHost::SetCompositor(ui::Compositor* compositor) { 930 void DelegatedFrameHost::SetCompositor(ui::Compositor* compositor) {
936 DCHECK(!compositor_); 931 DCHECK(!compositor_);
937 if (!compositor) 932 if (!compositor)
938 return; 933 return;
939 compositor_ = compositor; 934 compositor_ = compositor;
940 compositor_->AddObserver(this); 935 compositor_->AddObserver(this);
941 DCHECK(!vsync_manager_.get());
942 vsync_manager_ = compositor_->vsync_manager();
943 vsync_manager_->AddObserver(this);
944 } 936 }
945 937
946 void DelegatedFrameHost::ResetCompositor() { 938 void DelegatedFrameHost::ResetCompositor() {
947 if (!compositor_) 939 if (!compositor_)
948 return; 940 return;
949 RunOnCommitCallbacks(); 941 RunOnCommitCallbacks();
950 if (resize_lock_) { 942 if (resize_lock_) {
951 resize_lock_.reset(); 943 resize_lock_.reset();
952 client_->DelegatedFrameHostResizeLockWasReleased(); 944 client_->DelegatedFrameHostResizeLockWasReleased();
953 } 945 }
954 if (compositor_->HasObserver(this)) 946 if (compositor_->HasObserver(this))
955 compositor_->RemoveObserver(this); 947 compositor_->RemoveObserver(this);
956 if (vsync_manager_.get()) {
957 vsync_manager_->RemoveObserver(this);
958 vsync_manager_ = NULL;
959 }
960 compositor_ = nullptr; 948 compositor_ = nullptr;
961 } 949 }
962 950
963 void DelegatedFrameHost::LockResources() { 951 void DelegatedFrameHost::LockResources() {
964 DCHECK(frame_provider_.get() || !surface_id_.is_null()); 952 DCHECK(frame_provider_.get() || !surface_id_.is_null());
965 delegated_frame_evictor_->LockFrame(); 953 delegated_frame_evictor_->LockFrame();
966 } 954 }
967 955
968 void DelegatedFrameHost::RequestCopyOfOutput( 956 void DelegatedFrameHost::RequestCopyOfOutput(
969 scoped_ptr<cc::CopyOutputRequest> request) { 957 scoped_ptr<cc::CopyOutputRequest> request) {
(...skipping 25 matching lines...) Expand all
995 cc::SurfaceManager* manager = factory->GetSurfaceManager(); 983 cc::SurfaceManager* manager = factory->GetSurfaceManager();
996 new_layer->SetShowSurface( 984 new_layer->SetShowSurface(
997 surface_id_, base::Bind(&SatisfyCallback, base::Unretained(manager)), 985 surface_id_, base::Bind(&SatisfyCallback, base::Unretained(manager)),
998 base::Bind(&RequireCallback, base::Unretained(manager)), 986 base::Bind(&RequireCallback, base::Unretained(manager)),
999 current_surface_size_, current_scale_factor_, 987 current_surface_size_, current_scale_factor_,
1000 current_frame_size_in_dip_); 988 current_frame_size_in_dip_);
1001 } 989 }
1002 } 990 }
1003 991
1004 } // namespace content 992 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698