pub struct PaintOutcome {
pub needs_frame: bool,
pub needs_layout: bool,
pub needs_frame_paced_only: bool,
pub paced_interval: Option<Duration>,
}Expand description
The result of a whole crate::app::RenderRoot::paint pass.
needs_frame is whether any widget advanced animation state during paint and
asked (via PaintCtx::request_frame) to be re-invoked to continue. The
shell turns it into another scheduled frame — the desktop shell via
window.request_redraw(), the mobile shells implicitly through their
continuous loop. Mirrors crate::event::EventOutcome’s needs_redraw.
needs_layout is whether any widget asked (via PaintCtx::request_layout)
to have layout re-run next frame because its animation changed its layout, not
just its paint. crate::app::RenderRoot::paint folds it into the render
root’s pending crate::view::ChangeFlags (LAYOUT) so the next frame’s
take_change_flags().needs_layout() reports it — driving the mobile
intra-frame layout skip to relayout while the animation is in flight.
needs_frame_paced_only is the aggregated TickClass verdict: true only
when a frame was requested and every request this frame was
TickClass::CosmeticLoop (a pacable decorative loop), false the instant
any TickClass::Transition request (including any request_layout) joined
in. The mobile frame gate may throttle such a purely-cosmetic frame
to a lower cadence; a false here means the frame runs every vsync as today.
Only meaningful when needs_frame is true.
paced_interval is how fast that paced frame asked to be re-run: the MIN
over every paced request this pass (see PaintCtx::request_frame_paced_at).
Only meaningful alongside needs_frame_paced_only.
Fields§
§needs_frame: boolWhether the shell should schedule another frame to continue an animation.
needs_layout: boolWhether the render root folded a layout-continuation request into its
pending change flags (a widget called PaintCtx::request_layout).
needs_frame_paced_only: boolWhether a frame was requested and every request this frame was
TickClass::CosmeticLoop — the paced-only state the mobile frame gate
may throttle (see PaintCtx::needs_frame_paced_only). Meaningful only
when needs_frame is set.
paced_interval: Option<Duration>The tightest (MIN) interval any paced request this frame named — see
PaintCtx::paced_interval. None (no paced request) and
Some(Duration::ZERO) (a bare PaintCtx::request_frame_paced) both
mean “the theme’s own cosmetic_loop_rate”; a longer value asks the gate
to pace this loop slower than that cap. Meaningful only alongside
needs_frame_paced_only; a shell latches it beside that flag and hands it
to the frame gate, which resolves it against the live theme’s cap.
Trait Implementations§
Source§impl Clone for PaintOutcome
impl Clone for PaintOutcome
impl Copy for PaintOutcome
Source§impl Debug for PaintOutcome
impl Debug for PaintOutcome
Source§impl Default for PaintOutcome
impl Default for PaintOutcome
impl Eq for PaintOutcome
Source§impl PartialEq for PaintOutcome
impl PartialEq for PaintOutcome
impl StructuralPartialEq for PaintOutcome
Auto Trait Implementations§
impl Freeze for PaintOutcome
impl RefUnwindSafe for PaintOutcome
impl Send for PaintOutcome
impl Sync for PaintOutcome
impl Unpin for PaintOutcome
impl UnsafeUnpin for PaintOutcome
impl UnwindSafe for PaintOutcome
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.