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

Side by Side Diff: cc/trees/thread_proxy.cc

Issue 15139007: Ensure LayerTreeHostImpl's current frame time is updated every frame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/single_thread_proxy.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/thread_proxy.h" 5 #include "cc/trees/thread_proxy.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "cc/base/thread.h" 10 #include "cc/base/thread.h"
(...skipping 958 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 // Tell the main thread that the the newly-commited frame was drawn. 969 // Tell the main thread that the the newly-commited frame was drawn.
970 if (next_frame_is_newly_committed_frame_on_impl_thread_) { 970 if (next_frame_is_newly_committed_frame_on_impl_thread_) {
971 next_frame_is_newly_committed_frame_on_impl_thread_ = false; 971 next_frame_is_newly_committed_frame_on_impl_thread_ = false;
972 Proxy::MainThread()->PostTask( 972 Proxy::MainThread()->PostTask(
973 base::Bind(&ThreadProxy::DidCommitAndDrawFrame, main_thread_weak_ptr_)); 973 base::Bind(&ThreadProxy::DidCommitAndDrawFrame, main_thread_weak_ptr_));
974 } 974 }
975 975
976 if (draw_frame) 976 if (draw_frame)
977 CheckOutputSurfaceStatusOnImplThread(); 977 CheckOutputSurfaceStatusOnImplThread();
978 978
979 layer_tree_host_impl_->BeginNextFrame();
980
981 return result; 979 return result;
982 } 980 }
983 981
984 void ThreadProxy::AcquireLayerTextures() { 982 void ThreadProxy::AcquireLayerTextures() {
985 // Called when the main thread needs to modify a layer texture that is used 983 // Called when the main thread needs to modify a layer texture that is used
986 // directly by the compositor. 984 // directly by the compositor.
987 // This method will block until the next compositor draw if there is a 985 // This method will block until the next compositor draw if there is a
988 // previously committed frame that is still undrawn. This is necessary to 986 // previously committed frame that is still undrawn. This is necessary to
989 // ensure that the main thread does not monopolize access to the textures. 987 // ensure that the main thread does not monopolize access to the textures.
990 DCHECK(IsMainThread()); 988 DCHECK(IsMainThread());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 1025
1028 ScheduledActionDrawAndSwapResult 1026 ScheduledActionDrawAndSwapResult
1029 ThreadProxy::ScheduledActionDrawAndSwapForced() { 1027 ThreadProxy::ScheduledActionDrawAndSwapForced() {
1030 return ScheduledActionDrawAndSwapInternal(true); 1028 return ScheduledActionDrawAndSwapInternal(true);
1031 } 1029 }
1032 1030
1033 void ThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) { 1031 void ThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) {
1034 if (current_resource_update_controller_on_impl_thread_) 1032 if (current_resource_update_controller_on_impl_thread_)
1035 current_resource_update_controller_on_impl_thread_ 1033 current_resource_update_controller_on_impl_thread_
1036 ->PerformMoreUpdates(time); 1034 ->PerformMoreUpdates(time);
1035 layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame();
1037 } 1036 }
1038 1037
1039 void ThreadProxy::ReadyToFinalizeTextureUpdates() { 1038 void ThreadProxy::ReadyToFinalizeTextureUpdates() {
1040 DCHECK(IsImplThread()); 1039 DCHECK(IsImplThread());
1041 scheduler_on_impl_thread_->BeginFrameComplete(); 1040 scheduler_on_impl_thread_->BeginFrameComplete();
1042 } 1041 }
1043 1042
1044 void ThreadProxy::DidCommitAndDrawFrame() { 1043 void ThreadProxy::DidCommitAndDrawFrame() {
1045 DCHECK(IsMainThread()); 1044 DCHECK(IsMainThread());
1046 if (!layer_tree_host_) 1045 if (!layer_tree_host_)
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 !layer_tree_host_impl_->pending_tree()) { 1383 !layer_tree_host_impl_->pending_tree()) {
1385 TRACE_EVENT_INSTANT0("cc", "ReleaseCommitbyActivation", 1384 TRACE_EVENT_INSTANT0("cc", "ReleaseCommitbyActivation",
1386 TRACE_EVENT_SCOPE_THREAD); 1385 TRACE_EVENT_SCOPE_THREAD);
1387 DCHECK(layer_tree_host_impl_->settings().impl_side_painting); 1386 DCHECK(layer_tree_host_impl_->settings().impl_side_painting);
1388 completion_event_for_commit_held_on_tree_activation_->Signal(); 1387 completion_event_for_commit_held_on_tree_activation_->Signal();
1389 completion_event_for_commit_held_on_tree_activation_ = NULL; 1388 completion_event_for_commit_held_on_tree_activation_ = NULL;
1390 } 1389 }
1391 } 1390 }
1392 1391
1393 } // namespace cc 1392 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/single_thread_proxy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698