1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
# Clutter Frame scheduling
`ClutterFrameClock` state diagram.
```mermaid
stateDiagram
INIT --> SCHEDULED* : first frame scheduled
IDLE --> SCHEDULED* : next frame scheduled
SCHEDULED* --> IDLE : frame clock inhibited or mode changed
SCHEDULED* --> SCHEDULED* : schedule upgraded to SCHEDULED_NOW
SCHEDULED* --> DISPATCHED_ONE : begin an update
DISPATCHED_ONE --> IDLE : frame was either presented or aborted with nothing to draw
DISPATCHED_ONE --> DISPATCHED_ONE_AND_SCHEDULED* : entering triple buffering
DISPATCHED_ONE_AND_SCHEDULED* --> SCHEDULED* : frame was either presented or aborted with nothing to draw
DISPATCHED_ONE_AND_SCHEDULED* --> DISPATCHED_ONE : frame clock inhibited or mode changed
DISPATCHED_ONE_AND_SCHEDULED* --> DISPATCHED_TWO : start a second concurrent frame
DISPATCHED_TWO --> DISPATCHED_ONE : leaving triple buffering
```
|