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 #ifndef CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ | 5 #ifndef CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ |
6 #define CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ | 6 #define CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 | 182 |
183 // Notification from the OutputSurface that a swap has been consumed. | 183 // Notification from the OutputSurface that a swap has been consumed. |
184 void DidSwapBuffersComplete(); | 184 void DidSwapBuffersComplete(); |
185 | 185 |
186 // Indicates whether to prioritize animation smoothness over new content | 186 // Indicates whether to prioritize animation smoothness over new content |
187 // activation. | 187 // activation. |
188 void SetSmoothnessTakesPriority(bool smoothness_takes_priority); | 188 void SetSmoothnessTakesPriority(bool smoothness_takes_priority); |
189 bool smoothness_takes_priority() const { return smoothness_takes_priority_; } | 189 bool smoothness_takes_priority() const { return smoothness_takes_priority_; } |
190 | 190 |
191 // Indicates whether ACTION_DRAW_AND_SWAP_IF_POSSIBLE drew to the screen. | 191 // Indicates whether ACTION_DRAW_AND_SWAP_IF_POSSIBLE drew to the screen. |
192 void DidDrawIfPossibleCompleted(DrawSwapReadbackResult::DrawResult result); | 192 void DidDrawIfPossibleCompleted(DrawResult result); |
193 | 193 |
194 // Indicates that a new commit flow needs to be performed, either to pull | 194 // Indicates that a new commit flow needs to be performed, either to pull |
195 // updates from the main thread to the impl, or to push deltas from the impl | 195 // updates from the main thread to the impl, or to push deltas from the impl |
196 // thread to main. | 196 // thread to main. |
197 void SetNeedsCommit(); | 197 void SetNeedsCommit(); |
198 | 198 |
199 // As SetNeedsCommit(), but ensures the BeginMainFrame will be sent even | 199 // As SetNeedsCommit(), but ensures the BeginMainFrame will be sent even |
200 // if we are not visible. After this call we expect to go through | 200 // if we are not visible. After this call we expect to go through |
201 // the forced commit flow and then return to waiting for a non-forced | 201 // the forced commit flow and then return to waiting for a non-forced |
202 // BeginMainFrame to finish. | 202 // BeginMainFrame to finish. |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 bool ShouldDrawForced() const; | 258 bool ShouldDrawForced() const; |
259 bool ShouldDraw() const; | 259 bool ShouldDraw() const; |
260 bool ShouldActivatePendingTree() const; | 260 bool ShouldActivatePendingTree() const; |
261 bool ShouldUpdateVisibleTiles() const; | 261 bool ShouldUpdateVisibleTiles() const; |
262 bool ShouldSendBeginMainFrame() const; | 262 bool ShouldSendBeginMainFrame() const; |
263 bool ShouldCommit() const; | 263 bool ShouldCommit() const; |
264 bool ShouldManageTiles() const; | 264 bool ShouldManageTiles() const; |
265 | 265 |
266 void AdvanceCurrentFrameNumber(); | 266 void AdvanceCurrentFrameNumber(); |
267 bool HasSentBeginMainFrameThisFrame() const; | 267 bool HasSentBeginMainFrameThisFrame() const; |
| 268 bool HasSentDrawRequestThisFrame() const; |
268 bool HasScheduledManageTilesThisFrame() const; | 269 bool HasScheduledManageTilesThisFrame() const; |
269 bool HasUpdatedVisibleTilesThisFrame() const; | 270 bool HasUpdatedVisibleTilesThisFrame() const; |
270 bool HasSwappedThisFrame() const; | 271 bool HasSwappedThisFrame() const; |
271 | 272 |
272 void UpdateStateOnCommit(bool commit_was_aborted); | 273 void UpdateStateOnCommit(bool commit_was_aborted); |
273 void UpdateStateOnActivation(); | 274 void UpdateStateOnActivation(); |
274 void UpdateStateOnDraw(bool did_request_swap); | 275 void UpdateStateOnDraw(); |
275 void UpdateStateOnManageTiles(); | 276 void UpdateStateOnManageTiles(); |
276 | 277 |
277 const SchedulerSettings settings_; | 278 const SchedulerSettings settings_; |
278 | 279 |
279 OutputSurfaceState output_surface_state_; | 280 OutputSurfaceState output_surface_state_; |
280 BeginImplFrameState begin_impl_frame_state_; | 281 BeginImplFrameState begin_impl_frame_state_; |
281 CommitState commit_state_; | 282 CommitState commit_state_; |
282 ForcedRedrawOnTimeoutState forced_redraw_state_; | 283 ForcedRedrawOnTimeoutState forced_redraw_state_; |
283 SynchronousReadbackState readback_state_; | 284 SynchronousReadbackState readback_state_; |
284 | 285 |
285 BeginFrameArgs begin_impl_frame_args_; | 286 BeginFrameArgs begin_impl_frame_args_; |
286 | 287 |
287 int commit_count_; | 288 int commit_count_; |
288 int current_frame_number_; | 289 int current_frame_number_; |
289 int last_frame_number_swap_performed_; | 290 int last_frame_number_swap_performed_; |
290 int last_frame_number_begin_main_frame_sent_; | 291 int last_frame_number_begin_main_frame_sent_; |
| 292 int last_frame_number_draw_request_sent_; |
291 int last_frame_number_update_visible_tiles_was_called_; | 293 int last_frame_number_update_visible_tiles_was_called_; |
292 | 294 |
293 // manage_tiles_funnel_ is "filled" each time ManageTiles is called | 295 // manage_tiles_funnel_ is "filled" each time ManageTiles is called |
294 // and "drained" on each BeginImplFrame. If the funnel gets too full, | 296 // and "drained" on each BeginImplFrame. If the funnel gets too full, |
295 // we start throttling ACTION_MANAGE_TILES such that we average one | 297 // we start throttling ACTION_MANAGE_TILES such that we average one |
296 // ManageTile per BeginImplFrame. | 298 // ManageTile per BeginImplFrame. |
297 int manage_tiles_funnel_; | 299 int manage_tiles_funnel_; |
298 int consecutive_checkerboard_animations_; | 300 int consecutive_checkerboard_animations_; |
299 int max_pending_swaps_; | 301 int max_pending_swaps_; |
300 int pending_swaps_; | 302 int pending_swaps_; |
(...skipping 16 matching lines...) Expand all Loading... |
317 bool continuous_painting_; | 319 bool continuous_painting_; |
318 bool needs_back_to_back_readback_; | 320 bool needs_back_to_back_readback_; |
319 | 321 |
320 private: | 322 private: |
321 DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); | 323 DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); |
322 }; | 324 }; |
323 | 325 |
324 } // namespace cc | 326 } // namespace cc |
325 | 327 |
326 #endif // CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ | 328 #endif // CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ |
OLD | NEW |