Skip to main content

PaintOutcome

Struct PaintOutcome 

Source
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: bool

Whether the shell should schedule another frame to continue an animation.

§needs_layout: bool

Whether the render root folded a layout-continuation request into its pending change flags (a widget called PaintCtx::request_layout).

§needs_frame_paced_only: bool

Whether 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

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for PaintOutcome

Source§

impl Debug for PaintOutcome

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PaintOutcome

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for PaintOutcome

Source§

impl PartialEq for PaintOutcome

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for PaintOutcome

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> StorageAccess<T> for T

Source§

fn as_borrowed(&self) -> &T

Borrows the value.
Source§

fn into_taken(self) -> T

Takes the value.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.