File: clutter-frame-scheduling.md

package info (click to toggle)
mutter 49.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 51,732 kB
  • sloc: ansic: 397,916; xml: 3,384; python: 3,270; sh: 389; ruby: 167; makefile: 61; javascript: 26
file content (18 lines) | stat: -rw-r--r-- 895 bytes parent folder | download | duplicates (3)
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
```