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

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

Issue 131683005: cc: Make PrepareToDraw return an enum for why it aborts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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
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 <string> 7 #include <string>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 base::Bind(&ThreadProxy::CreateAndInitializeOutputSurface, 1081 base::Bind(&ThreadProxy::CreateAndInitializeOutputSurface,
1082 main_thread_weak_ptr_)); 1082 main_thread_weak_ptr_));
1083 } 1083 }
1084 1084
1085 DrawSwapReadbackResult ThreadProxy::DrawSwapReadbackInternal( 1085 DrawSwapReadbackResult ThreadProxy::DrawSwapReadbackInternal(
1086 bool forced_draw, 1086 bool forced_draw,
1087 bool swap_requested, 1087 bool swap_requested,
1088 bool readback_requested) { 1088 bool readback_requested) {
1089 TRACE_EVENT_SYNTHETIC_DELAY("cc.DrawAndSwap"); 1089 TRACE_EVENT_SYNTHETIC_DELAY("cc.DrawAndSwap");
1090 DrawSwapReadbackResult result; 1090 DrawSwapReadbackResult result;
1091 result.did_draw = false;
1092 result.did_swap = false; 1091 result.did_swap = false;
1093 result.did_readback = false; 1092 result.did_readback = false;
1093
1094 DCHECK(IsImplThread()); 1094 DCHECK(IsImplThread());
1095 DCHECK(layer_tree_host_impl_.get()); 1095 DCHECK(layer_tree_host_impl_.get());
1096 if (!layer_tree_host_impl_) 1096 if (!layer_tree_host_impl_) {
1097 result.draw_result = DrawSwapReadbackResult::DRAW_ABORTED_NO_TREE;
1097 return result; 1098 return result;
1099 }
1098 1100
1099 DCHECK(layer_tree_host_impl_->renderer()); 1101 DCHECK(layer_tree_host_impl_->renderer());
1100 if (!layer_tree_host_impl_->renderer()) 1102 if (!layer_tree_host_impl_->renderer()) {
1103 result.draw_result = DrawSwapReadbackResult::DRAW_ABORTED_NO_RENDERER;
1101 return result; 1104 return result;
1105 }
1102 1106
1103 base::TimeTicks start_time = base::TimeTicks::HighResNow(); 1107 base::TimeTicks start_time = base::TimeTicks::HighResNow();
1104 base::TimeDelta draw_duration_estimate = DrawDurationEstimate(); 1108 base::TimeDelta draw_duration_estimate = DrawDurationEstimate();
1105 base::AutoReset<bool> mark_inside(&inside_draw_, true); 1109 base::AutoReset<bool> mark_inside(&inside_draw_, true);
1106 1110
1107 // Advance our animations. 1111 // Advance our animations.
1108 base::TimeTicks monotonic_time = 1112 base::TimeTicks monotonic_time =
1109 layer_tree_host_impl_->CurrentFrameTimeTicks(); 1113 layer_tree_host_impl_->CurrentFrameTimeTicks();
1110 base::Time wall_clock_time = layer_tree_host_impl_->CurrentFrameTime(); 1114 base::Time wall_clock_time = layer_tree_host_impl_->CurrentFrameTime();
1111 1115
(...skipping 20 matching lines...) Expand all
1132 LayerTreeHostImpl::FrameData frame; 1136 LayerTreeHostImpl::FrameData frame;
1133 bool draw_frame = false; 1137 bool draw_frame = false;
1134 1138
1135 if (layer_tree_host_impl_->CanDraw() && 1139 if (layer_tree_host_impl_->CanDraw() &&
1136 (!drawing_for_readback || can_do_readback)) { 1140 (!drawing_for_readback || can_do_readback)) {
1137 // If it is for a readback, make sure we draw the portion being read back. 1141 // If it is for a readback, make sure we draw the portion being read back.
1138 gfx::Rect readback_rect; 1142 gfx::Rect readback_rect;
1139 if (drawing_for_readback) 1143 if (drawing_for_readback)
1140 readback_rect = readback_request_on_impl_thread_->rect; 1144 readback_rect = readback_request_on_impl_thread_->rect;
1141 1145
1142 if (layer_tree_host_impl_->PrepareToDraw(&frame, readback_rect) || 1146 result.draw_result =
1143 forced_draw) 1147 layer_tree_host_impl_->PrepareToDraw(&frame, readback_rect);
brianderson 2014/01/29 01:31:22 It feels funny to have PrepareToDraw return DID_DR
enne (OOO) 2014/01/29 01:40:19 Yeah, I thought that too. I could change DID_DRAW
danakj 2014/01/29 01:42:35 WILL_DRAW?
enne (OOO) 2014/01/29 01:47:20 WILL_DRAW doesn't make sense as a result after Dra
1144 draw_frame = true; 1148 draw_frame =
1149 forced_draw || result.draw_result == DrawSwapReadbackResult::DID_DRAW;
1145 } 1150 }
1146 1151
1147 if (draw_frame) { 1152 if (draw_frame) {
1148 layer_tree_host_impl_->DrawLayers( 1153 layer_tree_host_impl_->DrawLayers(
1149 &frame, 1154 &frame,
1150 scheduler_on_impl_thread_->LastBeginImplFrameTime()); 1155 scheduler_on_impl_thread_->LastBeginImplFrameTime());
1151 result.did_draw = true; 1156 result.draw_result = DrawSwapReadbackResult::DID_DRAW;
1157 } else {
1158 DCHECK_NE(DrawSwapReadbackResult::DID_DRAW, result.draw_result);
1152 } 1159 }
1153 layer_tree_host_impl_->DidDrawAllLayers(frame); 1160 layer_tree_host_impl_->DidDrawAllLayers(frame);
1154 1161
1155 bool start_ready_animations = draw_frame; 1162 bool start_ready_animations = draw_frame;
1156 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); 1163 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations);
1157 1164
1158 // Check for a pending CompositeAndReadback. 1165 // Check for a pending CompositeAndReadback.
1159 if (drawing_for_readback) { 1166 if (drawing_for_readback) {
1160 DCHECK(!swap_requested); 1167 DCHECK(!swap_requested);
1161 result.did_readback = false; 1168 result.did_readback = false;
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 commit_to_activate_duration_history_.InsertSample( 1660 commit_to_activate_duration_history_.InsertSample(
1654 base::TimeTicks::HighResNow() - commit_complete_time_); 1661 base::TimeTicks::HighResNow() - commit_complete_time_);
1655 } 1662 }
1656 1663
1657 void ThreadProxy::DidManageTiles() { 1664 void ThreadProxy::DidManageTiles() {
1658 DCHECK(IsImplThread()); 1665 DCHECK(IsImplThread());
1659 scheduler_on_impl_thread_->DidManageTiles(); 1666 scheduler_on_impl_thread_->DidManageTiles();
1660 } 1667 }
1661 1668
1662 } // namespace cc 1669 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698