Skip to main content

Module cause

Module cause 

Source
Expand description

Why a frame was drawn: two readings a view can take of the frame it is building, for an app that keeps a ledger of its frames and wants to know why one ran with nothing on screen moving.

  • FrameCause, the set of reasons that reached the window since the last frame began. The core records the input it was handed (Core::handle_input) and whether the last frame left one owed; the driver adds what only it sees (Core::note_frame_cause) — a wake, a resize, the caret’s blink, a surface retry, the OS events that never become input. Always kept: it is a few ORs a frame.
  • OwedBy, who holds a frame the last one left owed: the nodes whose transition is mid-flight, the cycles running, the departures playing, the containers easing a scroll, the held drag’s scroller, the animate nodes, and where request_frame was called from. Core::owed with names. Off unless Core::set_frame_trace asked for it, and taken at the start of begin_frame — the only moment the last frame’s tree, which names the holders, and the stores’ state, which says who they are, are both still there.

The same switch keeps a digest of every finished frame’s display list, so Core::frame_unchanged says whether a frame drew exactly what the one before it drew: a frame that changed nothing on screen.

Structs§

FrameCause
Why a frame was drawn: every reason that reached the window between the start of the last frame and the start of this one. Read from a view as Core::frame_cause. A set, because a frame answers everything that asked since the last one — a keystroke and the caret’s blink, a wheel and the transition it started.
FrameHolder
One thing that holds an owed frame, named for a person: see OwedBy.
FrameRequest
Where a frame was asked for: a Core::request_frame call, or one the core makes for itself.
OwedBy
Who holds the frame the last one left owed: Core::owed, named. Each list is empty when its kind in crate::Owed is false, and names what made it true when it is.