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" |
11 #include "cc/base/cc_export.h" | 11 #include "cc/base/cc_export.h" |
12 #include "cc/scheduler/scheduler_settings.h" | 12 #include "cc/scheduler/scheduler_settings.h" |
13 | 13 |
14 namespace cc { | 14 namespace cc { |
15 | 15 |
16 // The SchedulerStateMachine decides how to coordinate main thread activites | 16 // The SchedulerStateMachine decides how to coordinate main thread activites |
17 // like painting/running javascript with rendering and input activities on the | 17 // like painting/running javascript with rendering and input activities on the |
18 // impl thread. | 18 // impl thread. |
19 // | 19 // |
20 // The state machine tracks internal state but is also influenced by external | 20 // The state machine tracks internal state but is also influenced by external |
21 // state. Internal state includes things like whether a frame has been | 21 // state. Internal state includes things like whether a frame has been |
22 // requested, while external state includes things like the current time being | 22 // requested, while external state includes things like the current time being |
23 // near to the vblank time. | 23 // near to the vblank time. |
24 // | 24 // |
25 // The scheduler seperates "what to do next" from the updating of its internal | 25 // The scheduler seperates "what to do next" from the updating of its internal |
26 // state to make testing cleaner. | 26 // state to make testing cleaner. |
27 class CC_EXPORT SchedulerStateMachine { | 27 class CC_EXPORT SchedulerStateMachine { |
28 public: | 28 public: |
29 // settings must be valid for the lifetime of this class. | 29 // settings must be valid for the lifetime of this class. |
30 SchedulerStateMachine(const SchedulerSettings& settings); | 30 explicit SchedulerStateMachine(const SchedulerSettings& settings); |
31 | 31 |
32 enum CommitState { | 32 enum CommitState { |
33 COMMIT_STATE_IDLE, | 33 COMMIT_STATE_IDLE, |
34 COMMIT_STATE_FRAME_IN_PROGRESS, | 34 COMMIT_STATE_FRAME_IN_PROGRESS, |
35 COMMIT_STATE_READY_TO_COMMIT, | 35 COMMIT_STATE_READY_TO_COMMIT, |
36 COMMIT_STATE_WAITING_FOR_FIRST_DRAW, | 36 COMMIT_STATE_WAITING_FOR_FIRST_DRAW, |
37 COMMIT_STATE_WAITING_FOR_FIRST_FORCED_DRAW, | 37 COMMIT_STATE_WAITING_FOR_FIRST_FORCED_DRAW, |
38 }; | 38 }; |
39 | 39 |
40 enum TextureState { | 40 enum TextureState { |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 bool draw_if_possible_failed_; | 184 bool draw_if_possible_failed_; |
185 TextureState texture_state_; | 185 TextureState texture_state_; |
186 OutputSurfaceState output_surface_state_; | 186 OutputSurfaceState output_surface_state_; |
187 | 187 |
188 DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); | 188 DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); |
189 }; | 189 }; |
190 | 190 |
191 } // namespace cc | 191 } // namespace cc |
192 | 192 |
193 #endif // CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ | 193 #endif // CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ |
OLD | NEW |