
Chronologically they already overlap in time as presentation may complete in the middle of the dispatch function, otherwise they are contiguous in time. And most switch statements treated the two states the same already so they're easy to merge into a single `DISPATCHED` state. Having fewer states now will make life easier when we add more states later. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441>
451 B
451 B
Clutter Frame scheduling
ClutterFrameClock
state diagram.
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 : begin an update
DISPATCHED --> IDLE : frame was either presented or aborted with nothing to draw