OLD | NEW |
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 <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 ThreadProxy* proxy, | 100 ThreadProxy* proxy, |
101 int layer_tree_host_id, | 101 int layer_tree_host_id, |
102 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 102 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
103 : layer_tree_host_id(layer_tree_host_id), | 103 : layer_tree_host_id(layer_tree_host_id), |
104 contents_texture_manager(NULL), | 104 contents_texture_manager(NULL), |
105 commit_completion_event(NULL), | 105 commit_completion_event(NULL), |
106 completion_event_for_commit_held_on_tree_activation(NULL), | 106 completion_event_for_commit_held_on_tree_activation(NULL), |
107 next_frame_is_newly_committed_frame(false), | 107 next_frame_is_newly_committed_frame(false), |
108 inside_draw(false), | 108 inside_draw(false), |
109 input_throttled_until_commit(false), | 109 input_throttled_until_commit(false), |
110 did_commit_after_animating(false), | |
111 smoothness_priority_expiration_notifier( | 110 smoothness_priority_expiration_notifier( |
112 proxy->ImplThreadTaskRunner(), | 111 proxy->ImplThreadTaskRunner(), |
113 base::Bind(&ThreadProxy::RenewTreePriority, base::Unretained(proxy)), | 112 base::Bind(&ThreadProxy::RenewTreePriority, base::Unretained(proxy)), |
114 base::TimeDelta::FromMilliseconds( | 113 base::TimeDelta::FromMilliseconds( |
115 kSmoothnessTakesPriorityExpirationDelay * 1000)), | 114 kSmoothnessTakesPriorityExpirationDelay * 1000)), |
116 timing_history(rendering_stats_instrumentation), | 115 timing_history(rendering_stats_instrumentation), |
117 weak_factory(proxy) { | 116 weak_factory(proxy) { |
118 } | 117 } |
119 | 118 |
120 ThreadProxy::CompositorThreadOnly::~CompositorThreadOnly() {} | 119 ThreadProxy::CompositorThreadOnly::~CompositorThreadOnly() {} |
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 impl().scheduler->BeginMainFrameAborted(did_handle); | 929 impl().scheduler->BeginMainFrameAborted(did_handle); |
931 } | 930 } |
932 | 931 |
933 void ThreadProxy::ScheduledActionAnimate() { | 932 void ThreadProxy::ScheduledActionAnimate() { |
934 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionAnimate"); | 933 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionAnimate"); |
935 DCHECK(IsImplThread()); | 934 DCHECK(IsImplThread()); |
936 | 935 |
937 impl().animation_time = | 936 impl().animation_time = |
938 impl().layer_tree_host_impl->CurrentBeginFrameArgs().frame_time; | 937 impl().layer_tree_host_impl->CurrentBeginFrameArgs().frame_time; |
939 impl().layer_tree_host_impl->Animate(impl().animation_time); | 938 impl().layer_tree_host_impl->Animate(impl().animation_time); |
940 impl().did_commit_after_animating = false; | |
941 } | 939 } |
942 | 940 |
943 void ThreadProxy::ScheduledActionCommit() { | 941 void ThreadProxy::ScheduledActionCommit() { |
944 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionCommit"); | 942 TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionCommit"); |
945 DCHECK(IsImplThread()); | 943 DCHECK(IsImplThread()); |
946 DCHECK(IsMainThreadBlocked()); | 944 DCHECK(IsMainThreadBlocked()); |
947 DCHECK(impl().commit_completion_event); | 945 DCHECK(impl().commit_completion_event); |
948 DCHECK(impl().current_resource_update_controller); | 946 DCHECK(impl().current_resource_update_controller); |
949 | 947 |
950 // Complete all remaining texture updates. | 948 // Complete all remaining texture updates. |
951 impl().current_resource_update_controller->Finalize(); | 949 impl().current_resource_update_controller->Finalize(); |
952 impl().current_resource_update_controller = nullptr; | 950 impl().current_resource_update_controller = nullptr; |
953 | 951 |
954 impl().did_commit_after_animating = true; | |
955 | |
956 blocked_main().main_thread_inside_commit = true; | 952 blocked_main().main_thread_inside_commit = true; |
957 impl().layer_tree_host_impl->BeginCommit(); | 953 impl().layer_tree_host_impl->BeginCommit(); |
958 layer_tree_host()->BeginCommitOnImplThread(impl().layer_tree_host_impl.get()); | 954 layer_tree_host()->BeginCommitOnImplThread(impl().layer_tree_host_impl.get()); |
959 layer_tree_host()->FinishCommitOnImplThread( | 955 layer_tree_host()->FinishCommitOnImplThread( |
960 impl().layer_tree_host_impl.get()); | 956 impl().layer_tree_host_impl.get()); |
961 blocked_main().main_thread_inside_commit = false; | 957 blocked_main().main_thread_inside_commit = false; |
962 | 958 |
963 bool hold_commit = layer_tree_host()->settings().impl_side_painting && | 959 bool hold_commit = layer_tree_host()->settings().impl_side_painting && |
964 blocked_main().commit_waits_for_activation; | 960 blocked_main().commit_waits_for_activation; |
965 blocked_main().commit_waits_for_activation = false; | 961 blocked_main().commit_waits_for_activation = false; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1013 DrawResult ThreadProxy::DrawSwapInternal(bool forced_draw) { | 1009 DrawResult ThreadProxy::DrawSwapInternal(bool forced_draw) { |
1014 TRACE_EVENT_SYNTHETIC_DELAY("cc.DrawAndSwap"); | 1010 TRACE_EVENT_SYNTHETIC_DELAY("cc.DrawAndSwap"); |
1015 DrawResult result; | 1011 DrawResult result; |
1016 | 1012 |
1017 DCHECK(IsImplThread()); | 1013 DCHECK(IsImplThread()); |
1018 DCHECK(impl().layer_tree_host_impl.get()); | 1014 DCHECK(impl().layer_tree_host_impl.get()); |
1019 | 1015 |
1020 impl().timing_history.DidStartDrawing(); | 1016 impl().timing_history.DidStartDrawing(); |
1021 base::AutoReset<bool> mark_inside(&impl().inside_draw, true); | 1017 base::AutoReset<bool> mark_inside(&impl().inside_draw, true); |
1022 | 1018 |
1023 if (impl().did_commit_after_animating) { | |
1024 impl().layer_tree_host_impl->Animate(impl().animation_time); | |
1025 impl().did_commit_after_animating = false; | |
1026 } | |
1027 | |
1028 if (impl().layer_tree_host_impl->pending_tree()) | 1019 if (impl().layer_tree_host_impl->pending_tree()) |
1029 impl().layer_tree_host_impl->pending_tree()->UpdateDrawProperties(); | 1020 impl().layer_tree_host_impl->pending_tree()->UpdateDrawProperties(); |
1030 | 1021 |
1031 // This method is called on a forced draw, regardless of whether we are able | 1022 // This method is called on a forced draw, regardless of whether we are able |
1032 // to produce a frame, as the calling site on main thread is blocked until its | 1023 // to produce a frame, as the calling site on main thread is blocked until its |
1033 // request completes, and we signal completion here. If CanDraw() is false, we | 1024 // request completes, and we signal completion here. If CanDraw() is false, we |
1034 // will indicate success=false to the caller, but we must still signal | 1025 // will indicate success=false to the caller, but we must still signal |
1035 // completion to avoid deadlock. | 1026 // completion to avoid deadlock. |
1036 | 1027 |
1037 // We guard PrepareToDraw() with CanDraw() because it always returns a valid | 1028 // We guard PrepareToDraw() with CanDraw() because it always returns a valid |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1373 | 1364 |
1374 impl().timing_history.DidActivateSyncTree(); | 1365 impl().timing_history.DidActivateSyncTree(); |
1375 } | 1366 } |
1376 | 1367 |
1377 void ThreadProxy::DidManageTiles() { | 1368 void ThreadProxy::DidManageTiles() { |
1378 DCHECK(IsImplThread()); | 1369 DCHECK(IsImplThread()); |
1379 impl().scheduler->DidManageTiles(); | 1370 impl().scheduler->DidManageTiles(); |
1380 } | 1371 } |
1381 | 1372 |
1382 } // namespace cc | 1373 } // namespace cc |
OLD | NEW |