Renderer process wrapper.
All frame, acknowledgement, timeout, and recovery workflows live in focused handler modules. This module exposes the process API and keeps OTP callbacks as routing-only clauses.
Summary
Functions
Returns current recovery generation and acknowledged frame sequence.
Queues the latest semantic frame submission for asynchronous rendering.
Returns a specification to start this module under a supervisor.
Routes a typed frontend frame status to the renderer.
Records one-shot adaptation evidence without changing the retained source presentation.
Runs one frame synchronously inside this renderer process.
Returns true while rendering or awaiting frontend credit.
Requests recovery only when the failed generation and committed base still match.
Abandons the old frontend connection and renders a fresh keyframe.
Renders a same-connection keyframe while retaining presentation leases.
Renders a synchronous same-connection keyframe while retaining presentation leases.
Resets frontend state and renders a synchronous recovery keyframe.
Returns the visible terminal frontend failure, if one has stopped frame credit.
Returns the immutable interaction-index reader for this renderer generation.
Applies one ordered frontend text-presentation lifecycle event.
Types
@type t() :: MingaEditor.Renderer.State.t()
Functions
@spec acknowledgement_state(GenServer.server()) :: {non_neg_integer(), non_neg_integer()}
Returns current recovery generation and acknowledged frame sequence.
@spec cast_snapshot( GenServer.server(), MingaEditor.Renderer.Submission.t(), non_neg_integer() ) :: :ok
Queues the latest semantic frame submission for asynchronous rendering.
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec frame_status(GenServer.server(), MingaEditor.Frontend.Protocol.input_event()) :: :ok
Routes a typed frontend frame status to the renderer.
@spec record_adaptation( GenServer.server(), non_neg_integer(), non_neg_integer(), MingaEditor.Frontend.ResourcePolicy.dimension(), integer(), integer(), MingaEditor.Renderer.Submission.t() ) :: :ok | :error
Records one-shot adaptation evidence without changing the retained source presentation.
@spec render_sync( GenServer.server(), MingaEditor.Renderer.Submission.t(), non_neg_integer() ) :: {:ok, MingaEditor.Renderer.RenderReceipt.t()} | {:error, Exception.t()}
Runs one frame synchronously inside this renderer process.
@spec rendering?(GenServer.server()) :: boolean()
Returns true while rendering or awaiting frontend credit.
@spec request_recovery(GenServer.server(), non_neg_integer(), non_neg_integer()) :: MingaEditor.Renderer.RecoveryHandler.request_result()
Requests recovery only when the failed generation and committed base still match.
@spec reset_connection( GenServer.server(), MingaEditor.Renderer.Submission.t(), non_neg_integer() ) :: :ok
Abandons the old frontend connection and renders a fresh keyframe.
@spec reset_keyframe( GenServer.server(), MingaEditor.Renderer.Submission.t(), non_neg_integer() ) :: :ok
Renders a same-connection keyframe while retaining presentation leases.
@spec reset_keyframe_sync( GenServer.server(), MingaEditor.Renderer.Submission.t(), non_neg_integer() ) :: {:ok, MingaEditor.Renderer.RenderReceipt.t()} | {:error, Exception.t()}
Renders a synchronous same-connection keyframe while retaining presentation leases.
@spec reset_sync( GenServer.server(), MingaEditor.Renderer.Submission.t(), non_neg_integer() ) :: {:ok, MingaEditor.Renderer.RenderReceipt.t()} | {:error, Exception.t()}
Resets frontend state and renders a synchronous recovery keyframe.
@spec start_link(keyword()) :: GenServer.on_start()
@spec terminal_failure(GenServer.server()) :: MingaEditor.Renderer.RejectionState.terminal() | nil
Returns the visible terminal frontend failure, if one has stopped frame credit.
@spec text_interaction_reader(GenServer.server()) :: MingaEditor.Renderer.TextInteractionIndex.Reader.t()
Returns the immutable interaction-index reader for this renderer generation.
@spec text_presentation_state( GenServer.server(), MingaEditor.Window.id(), non_neg_integer(), :active | :discarded ) :: :ok | {:error, :unknown}
Applies one ordered frontend text-presentation lifecycle event.