Luxar Viewer API Documentation - v2026.10.19
    Preparing search index...

    Module data/scene-loader/update-view/pass-scheduler

    Serialization of a SceneLoader's view passes.

    One lock covers every kind of work that touches the loaders' shared buffers: a view pass (updateView's sweep + atomic commit), the frame the lock is held across between two passes, a progressive-refinement drain, and a failed-loader retry. This class owns that lock and everything that decides who runs next:

    • the pending slot (one latest-wins view state, in ViewStateQueue);
    • request generations and the waiters parked on them (#2943), which make waitForUpdate() and the dimension-animation pacing gate wait for the view they asked for to COMMIT, not merely to be accepted;
    • the targeted-resync stash (partition parts re-entering the frustum);
    • the B5 drag commit guarantee and its hold-expiry timer;
    • refinement start, hand-off, pre-emption by a retry (A10) and release.

    The state is explicit in PassScheduler.phase:

    idle lock free. pass a view pass is running (generation PassScheduler.passGen). yielding the lock is held across a frame with no pass in flight (between two serialized passes, or a refinement cancellation hand-off). refining a refinement drain holds the lock it inherited from a pass tail or a load. retrying a failed-loader retry holds the lock.

    What runs, and for which view, stays with the host (SceneLoader): this class never reads geometry or loaders except through PassSchedulerHost.

    PassScheduler
    PassRequestOptions
    PassSchedulerHost
    RunningPass
    PassOutcome
    PassPhase
    DRAG_COMMIT_INTERVAL_MS
    DRAG_COMMIT_MAX_HOLD_MS