Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
PhosphorAnimation::Limits Namespace Reference

Variables

constexpr int MinAnimationDurationMs = 50
 Minimum animation duration in milliseconds.
 
constexpr int MaxAnimationDurationMs = 2000
 Maximum animation duration in milliseconds.
 
constexpr int DefaultAnimationDurationMs = 150
 Default animation duration in milliseconds, used as the fallback at startup before settings are loaded from the daemon.
 
constexpr int MinAnimationStaggerIntervalMs = 10
 Minimum stagger interval between sequenced animations in milliseconds.
 
constexpr int MaxAnimationStaggerIntervalMs = 200
 Maximum stagger interval between sequenced animations in milliseconds.
 
constexpr float MaxShaderTimeDeltaSeconds = 0.1f
 Hard ceiling on the per-frame iTimeDelta pushed into shaders, in seconds.
 

Variable Documentation

◆ DefaultAnimationDurationMs

constexpr int PhosphorAnimation::Limits::DefaultAnimationDurationMs = 150
constexpr

Default animation duration in milliseconds, used as the fallback at startup before settings are loaded from the daemon.

150 ms is short enough to feel snappy on legitimate rapid window churn but long enough that a user with a fresh install sees the transition rather than what looks like a hard cut. MUST sit within [MinAnimationDurationMs, MaxAnimationDurationMs] so an unconditional init through this constant is structurally safe — settings reload further refines it.

◆ MaxAnimationDurationMs

constexpr int PhosphorAnimation::Limits::MaxAnimationDurationMs = 2000
constexpr

Maximum animation duration in milliseconds.

Two seconds covers every reasonable use case (deliberate, drawn-out OSD reveals; slow-motion debugging) without letting a misconfigured tree freeze a popup for an unreasonable interval.

◆ MaxAnimationStaggerIntervalMs

constexpr int PhosphorAnimation::Limits::MaxAnimationStaggerIntervalMs = 200
constexpr

Maximum stagger interval between sequenced animations in milliseconds.

200 ms × N items is enough to feel deliberate without making large lists glacial.

◆ MaxShaderTimeDeltaSeconds

constexpr float PhosphorAnimation::Limits::MaxShaderTimeDeltaSeconds = 0.1f
constexpr

Hard ceiling on the per-frame iTimeDelta pushed into shaders, in seconds.

Both runtimes (the daemon's overlay shader update path and the surface-animator's compositor-side push) clamp the steady-clock frame delta against this so a sleep/resume hiccup, GC stall, or scheduler glitch does not blast a multi-second jump into shaders that integrate iTimeDelta (sparkle drift, particle motion, noise advance). 100 ms is generous: at the worst-cap a single tick represents 6 frames worth of motion at 60 Hz, beyond which the effect "skips" rather than blurring through unrealistic motion. Pinned in this header so a future bump propagates to BOTH runtimes without one falling out of sync.

◆ MinAnimationDurationMs

constexpr int PhosphorAnimation::Limits::MinAnimationDurationMs = 50
constexpr

Minimum animation duration in milliseconds.

Below ~50 ms the transition is so brief the user perceives it as a snap.

◆ MinAnimationStaggerIntervalMs

constexpr int PhosphorAnimation::Limits::MinAnimationStaggerIntervalMs = 10
constexpr

Minimum stagger interval between sequenced animations in milliseconds.

Below 10 ms the staggering blurs into a single simultaneous burst.