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

Side by Side Diff: cc/scheduler_state_machine.cc

Issue 11879012: cc: Redraw incomplete frames when new texture uploads finish (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@decouple_draw3b
Patch Set: fix [chromium-style] virtual methods with non-empty bodies shouldn't be declared inline Created 7 years, 11 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
« no previous file with comments | « cc/scheduler_state_machine.h ('k') | cc/scheduler_unittest.cc » ('j') | 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/scheduler_state_machine.h" 5 #include "cc/scheduler_state_machine.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 9
10 namespace cc { 10 namespace cc {
11 11
12 SchedulerStateMachine::SchedulerStateMachine(const SchedulerSettings& settings) 12 SchedulerStateMachine::SchedulerStateMachine(const SchedulerSettings& settings)
13 : m_settings(settings) 13 : m_settings(settings)
14 , m_commitState(COMMIT_STATE_IDLE) 14 , m_commitState(COMMIT_STATE_IDLE)
15 , m_currentFrameNumber(0) 15 , m_currentFrameNumber(0)
16 , m_lastFrameNumberWhereDrawWasCalled(-1) 16 , m_lastFrameNumberWhereDrawWasCalled(-1)
17 , m_lastFrameNumberWhereTreeActivationAttempted(-1) 17 , m_lastFrameNumberWhereTreeActivationAttempted(-1)
18 , m_lastFrameNumberWhereCheckForCompletedTexturesCalled(-1)
18 , m_consecutiveFailedDraws(0) 19 , m_consecutiveFailedDraws(0)
19 , m_maximumNumberOfFailedDrawsBeforeDrawIsForced(3) 20 , m_maximumNumberOfFailedDrawsBeforeDrawIsForced(3)
20 , m_needsRedraw(false) 21 , m_needsRedraw(false)
22 , m_swapUsedIncompleteTexture(false)
21 , m_needsForcedRedraw(false) 23 , m_needsForcedRedraw(false)
22 , m_needsForcedRedrawAfterNextCommit(false) 24 , m_needsForcedRedrawAfterNextCommit(false)
23 , m_needsCommit(false) 25 , m_needsCommit(false)
24 , m_needsForcedCommit(false) 26 , m_needsForcedCommit(false)
25 , m_expectImmediateBeginFrame(false) 27 , m_expectImmediateBeginFrame(false)
26 , m_mainThreadNeedsLayerTextures(false) 28 , m_mainThreadNeedsLayerTextures(false)
27 , m_insideVSync(false) 29 , m_insideVSync(false)
28 , m_visible(false) 30 , m_visible(false)
29 , m_canBeginFrame(false) 31 , m_canBeginFrame(false)
30 , m_canDraw(false) 32 , m_canDraw(false)
31 , m_hasPendingTree(false) 33 , m_hasPendingTree(false)
32 , m_drawIfPossibleFailed(false) 34 , m_drawIfPossibleFailed(false)
33 , m_textureState(LAYER_TEXTURE_STATE_UNLOCKED) 35 , m_textureState(LAYER_TEXTURE_STATE_UNLOCKED)
34 , m_outputSurfaceState(OUTPUT_SURFACE_ACTIVE) 36 , m_outputSurfaceState(OUTPUT_SURFACE_ACTIVE)
35 { 37 {
36 } 38 }
37 39
38 std::string SchedulerStateMachine::toString() 40 std::string SchedulerStateMachine::toString()
39 { 41 {
40 std::string str; 42 std::string str;
43 base::StringAppendF(&str, "m_settings.implSidePainting = %d; ", m_settings.i mplSidePainting);
41 base::StringAppendF(&str, "m_commitState = %d; ", m_commitState); 44 base::StringAppendF(&str, "m_commitState = %d; ", m_commitState);
42 base::StringAppendF(&str, "m_currentFrameNumber = %d; ", m_currentFrameNumbe r); 45 base::StringAppendF(&str, "m_currentFrameNumber = %d; ", m_currentFrameNumbe r);
43 base::StringAppendF(&str, "m_lastFrameNumberWhereDrawWasCalled = %d; ", m_la stFrameNumberWhereDrawWasCalled); 46 base::StringAppendF(&str, "m_lastFrameNumberWhereDrawWasCalled = %d; ", m_la stFrameNumberWhereDrawWasCalled);
47 base::StringAppendF(&str, "m_lastFrameNumberWhereTreeActivationAttempted = % d; ", m_lastFrameNumberWhereTreeActivationAttempted);
48 base::StringAppendF(&str, "m_lastFrameNumberWhereCheckForCompletedTexturesCa lled = %d; ", m_lastFrameNumberWhereCheckForCompletedTexturesCalled);
44 base::StringAppendF(&str, "m_consecutiveFailedDraws = %d; ", m_consecutiveFa iledDraws); 49 base::StringAppendF(&str, "m_consecutiveFailedDraws = %d; ", m_consecutiveFa iledDraws);
45 base::StringAppendF(&str, "m_maximumNumberOfFailedDrawsBeforeDrawIsForced = %d; ", m_maximumNumberOfFailedDrawsBeforeDrawIsForced); 50 base::StringAppendF(&str, "m_maximumNumberOfFailedDrawsBeforeDrawIsForced = %d; ", m_maximumNumberOfFailedDrawsBeforeDrawIsForced);
46 base::StringAppendF(&str, "m_needsRedraw = %d; ", m_needsRedraw); 51 base::StringAppendF(&str, "m_needsRedraw = %d; ", m_needsRedraw);
52 base::StringAppendF(&str, "m_swapUsedIncompleteTexture = %d; ", m_swapUsedIn completeTexture);
47 base::StringAppendF(&str, "m_needsForcedRedraw = %d; ", m_needsForcedRedraw) ; 53 base::StringAppendF(&str, "m_needsForcedRedraw = %d; ", m_needsForcedRedraw) ;
48 base::StringAppendF(&str, "m_needsForcedRedrawAfterNextCommit = %d; ", m_nee dsForcedRedrawAfterNextCommit); 54 base::StringAppendF(&str, "m_needsForcedRedrawAfterNextCommit = %d; ", m_nee dsForcedRedrawAfterNextCommit);
49 base::StringAppendF(&str, "m_needsCommit = %d; ", m_needsCommit); 55 base::StringAppendF(&str, "m_needsCommit = %d; ", m_needsCommit);
50 base::StringAppendF(&str, "m_needsForcedCommit = %d; ", m_needsForcedCommit) ; 56 base::StringAppendF(&str, "m_needsForcedCommit = %d; ", m_needsForcedCommit) ;
51 base::StringAppendF(&str, "m_expectImmediateBeginFrame = %d; ", m_expectImme diateBeginFrame); 57 base::StringAppendF(&str, "m_expectImmediateBeginFrame = %d; ", m_expectImme diateBeginFrame);
52 base::StringAppendF(&str, "m_mainThreadNeedsLayerTextures = %d; ", m_mainThr eadNeedsLayerTextures); 58 base::StringAppendF(&str, "m_mainThreadNeedsLayerTextures = %d; ", m_mainThr eadNeedsLayerTextures);
53 base::StringAppendF(&str, "m_insideVSync = %d; ", m_insideVSync); 59 base::StringAppendF(&str, "m_insideVSync = %d; ", m_insideVSync);
54 base::StringAppendF(&str, "m_visible = %d; ", m_visible); 60 base::StringAppendF(&str, "m_visible = %d; ", m_visible);
55 base::StringAppendF(&str, "m_canBeginFrame = %d; ", m_canBeginFrame); 61 base::StringAppendF(&str, "m_canBeginFrame = %d; ", m_canBeginFrame);
56 base::StringAppendF(&str, "m_canDraw = %d; ", m_canDraw); 62 base::StringAppendF(&str, "m_canDraw = %d; ", m_canDraw);
57 base::StringAppendF(&str, "m_drawIfPossibleFailed = %d; ", m_drawIfPossibleF ailed); 63 base::StringAppendF(&str, "m_drawIfPossibleFailed = %d; ", m_drawIfPossibleF ailed);
58 base::StringAppendF(&str, "m_hasPendingTree = %d; ", m_hasPendingTree); 64 base::StringAppendF(&str, "m_hasPendingTree = %d; ", m_hasPendingTree);
59 base::StringAppendF(&str, "m_textureState = %d; ", m_textureState); 65 base::StringAppendF(&str, "m_textureState = %d; ", m_textureState);
60 base::StringAppendF(&str, "m_outputSurfaceState = %d; ", m_outputSurfaceStat e); 66 base::StringAppendF(&str, "m_outputSurfaceState = %d; ", m_outputSurfaceStat e);
61 return str; 67 return str;
62 } 68 }
63 69
64 bool SchedulerStateMachine::hasDrawnThisFrame() const 70 bool SchedulerStateMachine::hasDrawnThisFrame() const
65 { 71 {
66 return m_currentFrameNumber == m_lastFrameNumberWhereDrawWasCalled; 72 return m_currentFrameNumber == m_lastFrameNumberWhereDrawWasCalled;
67 } 73 }
68 74
69 bool SchedulerStateMachine::hasAttemptedTreeActivationThisFrame() const 75 bool SchedulerStateMachine::hasAttemptedTreeActivationThisFrame() const
70 { 76 {
71 return m_currentFrameNumber == m_lastFrameNumberWhereTreeActivationAttempted ; 77 return m_currentFrameNumber == m_lastFrameNumberWhereTreeActivationAttempted ;
72 } 78 }
73 79
80 bool SchedulerStateMachine::hasCheckedForCompletedTexturesThisFrame() const
81 {
82 return m_currentFrameNumber ==
83 m_lastFrameNumberWhereCheckForCompletedTexturesCalled;
84 }
85
74 bool SchedulerStateMachine::drawSuspendedUntilCommit() const 86 bool SchedulerStateMachine::drawSuspendedUntilCommit() const
75 { 87 {
76 if (!m_canDraw) 88 if (!m_canDraw)
77 return true; 89 return true;
78 if (!m_visible) 90 if (!m_visible)
79 return true; 91 return true;
80 if (m_textureState == LAYER_TEXTURE_STATE_ACQUIRED_BY_MAIN_THREAD) 92 if (m_textureState == LAYER_TEXTURE_STATE_ACQUIRED_BY_MAIN_THREAD)
81 return true; 93 return true;
82 return false; 94 return false;
83 } 95 }
(...skipping 18 matching lines...) Expand all
102 return false; 114 return false;
103 if (hasDrawnThisFrame()) 115 if (hasDrawnThisFrame())
104 return false; 116 return false;
105 if (m_outputSurfaceState != OUTPUT_SURFACE_ACTIVE) 117 if (m_outputSurfaceState != OUTPUT_SURFACE_ACTIVE)
106 return false; 118 return false;
107 return true; 119 return true;
108 } 120 }
109 121
110 bool SchedulerStateMachine::shouldAttemptTreeActivation() const 122 bool SchedulerStateMachine::shouldAttemptTreeActivation() const
111 { 123 {
112 return m_hasPendingTree && m_insideVSync && !hasAttemptedTreeActivationThisFra me(); 124 return m_hasPendingTree && m_insideVSync && !hasAttemptedTreeActivationThisF rame();
125 }
126
127 bool SchedulerStateMachine::shouldCheckForCompletedTextures() const
128 {
129 if (!m_settings.implSidePainting)
130 return false;
131 if (hasCheckedForCompletedTexturesThisFrame())
132 return false;
133
134 return shouldAttemptTreeActivation() ||
135 shouldDraw() ||
136 m_swapUsedIncompleteTexture;
113 } 137 }
114 138
115 bool SchedulerStateMachine::shouldAcquireLayerTexturesForMainThread() const 139 bool SchedulerStateMachine::shouldAcquireLayerTexturesForMainThread() const
116 { 140 {
117 if (!m_mainThreadNeedsLayerTextures) 141 if (!m_mainThreadNeedsLayerTextures)
118 return false; 142 return false;
119 if (m_textureState == LAYER_TEXTURE_STATE_UNLOCKED) 143 if (m_textureState == LAYER_TEXTURE_STATE_UNLOCKED)
120 return true; 144 return true;
121 DCHECK(m_textureState == LAYER_TEXTURE_STATE_ACQUIRED_BY_IMPL_THREAD); 145 DCHECK(m_textureState == LAYER_TEXTURE_STATE_ACQUIRED_BY_IMPL_THREAD);
122 // Transfer the lock from impl thread to main thread immediately if the 146 // Transfer the lock from impl thread to main thread immediately if the
(...skipping 14 matching lines...) Expand all
137 case COMMIT_STATE_IDLE: 161 case COMMIT_STATE_IDLE:
138 if (m_outputSurfaceState != OUTPUT_SURFACE_ACTIVE && m_needsForcedRedraw ) 162 if (m_outputSurfaceState != OUTPUT_SURFACE_ACTIVE && m_needsForcedRedraw )
139 return ACTION_DRAW_FORCED; 163 return ACTION_DRAW_FORCED;
140 if (m_outputSurfaceState != OUTPUT_SURFACE_ACTIVE && m_needsForcedCommit ) 164 if (m_outputSurfaceState != OUTPUT_SURFACE_ACTIVE && m_needsForcedCommit )
141 // TODO(enne): Should probably drop the active tree on force commit 165 // TODO(enne): Should probably drop the active tree on force commit
142 return m_hasPendingTree ? ACTION_NONE : ACTION_BEGIN_FRAME; 166 return m_hasPendingTree ? ACTION_NONE : ACTION_BEGIN_FRAME;
143 if (m_outputSurfaceState == OUTPUT_SURFACE_LOST) 167 if (m_outputSurfaceState == OUTPUT_SURFACE_LOST)
144 return ACTION_BEGIN_OUTPUT_SURFACE_RECREATION; 168 return ACTION_BEGIN_OUTPUT_SURFACE_RECREATION;
145 if (m_outputSurfaceState == OUTPUT_SURFACE_RECREATING) 169 if (m_outputSurfaceState == OUTPUT_SURFACE_RECREATING)
146 return ACTION_NONE; 170 return ACTION_NONE;
171 if (shouldCheckForCompletedTextures())
172 return ACTION_CHECK_FOR_NEW_TEXTURES;
147 if (shouldAttemptTreeActivation()) 173 if (shouldAttemptTreeActivation())
148 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED; 174 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED;
149 if (shouldDraw()) 175 if (shouldDraw())
150 return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POS SIBLE; 176 return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POS SIBLE;
151 if (m_needsCommit && ((m_visible && m_canBeginFrame) || m_needsForcedCom mit)) 177 if (m_needsCommit && ((m_visible && m_canBeginFrame) || m_needsForcedCom mit))
152 // TODO(enne): Should probably drop the active tree on force commit 178 // TODO(enne): Should probably drop the active tree on force commit
153 return m_hasPendingTree ? ACTION_NONE : ACTION_BEGIN_FRAME; 179 return m_hasPendingTree ? ACTION_NONE : ACTION_BEGIN_FRAME;
154 return ACTION_NONE; 180 return ACTION_NONE;
155 181
156 case COMMIT_STATE_FRAME_IN_PROGRESS: 182 case COMMIT_STATE_FRAME_IN_PROGRESS:
183 if (shouldCheckForCompletedTextures())
184 return ACTION_CHECK_FOR_NEW_TEXTURES;
157 if (shouldAttemptTreeActivation()) 185 if (shouldAttemptTreeActivation())
158 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED; 186 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED;
159 if (shouldDraw()) 187 if (shouldDraw())
160 return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POS SIBLE; 188 return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POS SIBLE;
161 return ACTION_NONE; 189 return ACTION_NONE;
162 190
163 case COMMIT_STATE_READY_TO_COMMIT: 191 case COMMIT_STATE_READY_TO_COMMIT:
164 return ACTION_COMMIT; 192 return ACTION_COMMIT;
165 193
166 case COMMIT_STATE_WAITING_FOR_FIRST_DRAW: { 194 case COMMIT_STATE_WAITING_FOR_FIRST_DRAW: {
195 if (shouldCheckForCompletedTextures())
196 return ACTION_CHECK_FOR_NEW_TEXTURES;
167 if (shouldAttemptTreeActivation()) 197 if (shouldAttemptTreeActivation())
168 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED; 198 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED;
169 if (shouldDraw() || m_outputSurfaceState == OUTPUT_SURFACE_LOST) 199 if (shouldDraw() || m_outputSurfaceState == OUTPUT_SURFACE_LOST)
170 return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POS SIBLE; 200 return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POS SIBLE;
171 // COMMIT_STATE_WAITING_FOR_FIRST_DRAW wants to enforce a draw. If m_can Draw is false 201 // COMMIT_STATE_WAITING_FOR_FIRST_DRAW wants to enforce a draw. If m_can Draw is false
172 // or textures are not available, proceed to the next step (similar as i n COMMIT_STATE_IDLE). 202 // or textures are not available, proceed to the next step (similar as i n COMMIT_STATE_IDLE).
173 bool canCommit = m_visible || m_needsForcedCommit; 203 bool canCommit = m_visible || m_needsForcedCommit;
174 if (m_needsCommit && canCommit && drawSuspendedUntilCommit()) 204 if (m_needsCommit && canCommit && drawSuspendedUntilCommit())
175 return m_hasPendingTree ? ACTION_NONE : ACTION_BEGIN_FRAME; 205 return m_hasPendingTree ? ACTION_NONE : ACTION_BEGIN_FRAME;
176 return ACTION_NONE; 206 return ACTION_NONE;
177 } 207 }
178 208
179 case COMMIT_STATE_WAITING_FOR_FIRST_FORCED_DRAW: 209 case COMMIT_STATE_WAITING_FOR_FIRST_FORCED_DRAW:
210 if (shouldCheckForCompletedTextures())
211 return ACTION_CHECK_FOR_NEW_TEXTURES;
180 if (shouldAttemptTreeActivation()) 212 if (shouldAttemptTreeActivation())
181 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED; 213 return ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED;
182 if (m_needsForcedRedraw) 214 if (m_needsForcedRedraw)
183 return ACTION_DRAW_FORCED; 215 return ACTION_DRAW_FORCED;
184 return ACTION_NONE; 216 return ACTION_NONE;
185 } 217 }
186 NOTREACHED(); 218 NOTREACHED();
187 return ACTION_NONE; 219 return ACTION_NONE;
188 } 220 }
189 221
190 void SchedulerStateMachine::updateState(Action action) 222 void SchedulerStateMachine::updateState(Action action)
191 { 223 {
192 switch (action) { 224 switch (action) {
193 case ACTION_NONE: 225 case ACTION_NONE:
194 return; 226 return;
195 227
228 case ACTION_CHECK_FOR_NEW_TEXTURES:
229 m_lastFrameNumberWhereCheckForCompletedTexturesCalled = m_currentFrameNu mber;
230 return;
231
196 case ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED: 232 case ACTION_ACTIVATE_PENDING_TREE_IF_NEEDED:
197 m_lastFrameNumberWhereTreeActivationAttempted = m_currentFrameNumber; 233 m_lastFrameNumberWhereTreeActivationAttempted = m_currentFrameNumber;
198 return; 234 return;
199 235
200 case ACTION_BEGIN_FRAME: 236 case ACTION_BEGIN_FRAME:
201 DCHECK(!m_hasPendingTree); 237 DCHECK(!m_hasPendingTree);
202 DCHECK(m_visible || m_needsForcedCommit); 238 DCHECK(m_visible || m_needsForcedCommit);
203 m_commitState = COMMIT_STATE_FRAME_IN_PROGRESS; 239 m_commitState = COMMIT_STATE_FRAME_IN_PROGRESS;
204 m_needsCommit = false; 240 m_needsCommit = false;
205 m_needsForcedCommit = false; 241 m_needsForcedCommit = false;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 if (m_hasPendingTree) 306 if (m_hasPendingTree)
271 return true; 307 return true;
272 308
273 // If we can't draw, don't tick until we are notified that we can draw again . 309 // If we can't draw, don't tick until we are notified that we can draw again .
274 if (!m_canDraw) 310 if (!m_canDraw)
275 return false; 311 return false;
276 312
277 if (m_needsForcedRedraw) 313 if (m_needsForcedRedraw)
278 return true; 314 return true;
279 315
316 if (m_visible && m_swapUsedIncompleteTexture)
317 return true;
318
280 return m_needsRedraw && m_visible && m_outputSurfaceState == OUTPUT_SURFACE_ ACTIVE; 319 return m_needsRedraw && m_visible && m_outputSurfaceState == OUTPUT_SURFACE_ ACTIVE;
281 } 320 }
282 321
283 void SchedulerStateMachine::didEnterVSync() 322 void SchedulerStateMachine::didEnterVSync()
284 { 323 {
285 m_insideVSync = true; 324 m_insideVSync = true;
286 } 325 }
287 326
288 void SchedulerStateMachine::didLeaveVSync() 327 void SchedulerStateMachine::didLeaveVSync()
289 { 328 {
290 m_currentFrameNumber++; 329 m_currentFrameNumber++;
291 m_insideVSync = false; 330 m_insideVSync = false;
292 } 331 }
293 332
294 void SchedulerStateMachine::setVisible(bool visible) 333 void SchedulerStateMachine::setVisible(bool visible)
295 { 334 {
296 m_visible = visible; 335 m_visible = visible;
297 } 336 }
298 337
299 void SchedulerStateMachine::setNeedsRedraw() 338 void SchedulerStateMachine::setNeedsRedraw()
300 { 339 {
301 m_needsRedraw = true; 340 m_needsRedraw = true;
302 } 341 }
303 342
343 void SchedulerStateMachine::didSwapUseIncompleteTexture()
344 {
345 m_swapUsedIncompleteTexture = true;
346 }
347
304 void SchedulerStateMachine::setNeedsForcedRedraw() 348 void SchedulerStateMachine::setNeedsForcedRedraw()
305 { 349 {
306 m_needsForcedRedraw = true; 350 m_needsForcedRedraw = true;
307 } 351 }
308 352
309 void SchedulerStateMachine::didDrawIfPossibleCompleted(bool success) 353 void SchedulerStateMachine::didDrawIfPossibleCompleted(bool success)
310 { 354 {
311 m_drawIfPossibleFailed = !success; 355 m_drawIfPossibleFailed = !success;
312 if (m_drawIfPossibleFailed) { 356 if (m_drawIfPossibleFailed) {
313 m_needsRedraw = true; 357 m_needsRedraw = true;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 m_outputSurfaceState = OUTPUT_SURFACE_ACTIVE; 419 m_outputSurfaceState = OUTPUT_SURFACE_ACTIVE;
376 setNeedsCommit(); 420 setNeedsCommit();
377 } 421 }
378 422
379 void SchedulerStateMachine::setMaximumNumberOfFailedDrawsBeforeDrawIsForced(int numDraws) 423 void SchedulerStateMachine::setMaximumNumberOfFailedDrawsBeforeDrawIsForced(int numDraws)
380 { 424 {
381 m_maximumNumberOfFailedDrawsBeforeDrawIsForced = numDraws; 425 m_maximumNumberOfFailedDrawsBeforeDrawIsForced = numDraws;
382 } 426 }
383 427
384 } // namespace cc 428 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler_state_machine.h ('k') | cc/scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698