MingaEditor.Renderer.Caches (Minga v0.1.0)

Copy Markdown View Source

Explicit render-pipeline cache state, replacing process-dictionary entries.

Each field corresponds to a former Process.put/get key used across the render pipeline stages. The struct is carried on EditorState and on RenderPipeline.Input, survives across frames, and is written back via EditorState.apply_render_output/2 after each pipeline run.

Ownership by stage

  • Chrome (chrome_prev_*): RenderPipeline, stage 5 fingerprint cache.
  • Content (search_decoration_cache, doc_highlight_cache): consumed by ContentHelpers.build_render_ctx/3; cleared when the fingerprint changes. block_render_cache is a within-frame cache reset after each window render.
  • Emit (emit_prev_*, last_title, last_window_bg): consumed by Frontend.Emit stage 7.
  • Adapter (adapter_gui_caches): core GUI adapter fingerprint state.

Summary

Functions

Creates a fresh Caches struct with first-frame defaults.

Clears frontend-retained state tracking after the frontend reports ready again.

Types

t()

@type t() :: %MingaEditor.Renderer.Caches{
  adapter_gui_caches: Minga.Frontend.Adapter.GUI.Caches.t(),
  block_render_cache: %{required(term()) => term()},
  chrome_prev_fingerprint: integer() | nil,
  chrome_prev_result: term(),
  doc_highlight_cache: term(),
  emit_prev_buf_versions: %{required(term()) => non_neg_integer()},
  emit_prev_content_rects: %{required(term()) => term()},
  emit_prev_cursor_lines: %{required(term()) => non_neg_integer()},
  emit_prev_editing_mode: atom() | nil,
  emit_prev_gutter_ws: %{required(term()) => non_neg_integer()},
  emit_prev_viewport_tops: %{required(term()) => non_neg_integer()},
  frame_render_path: :patch | :full,
  frame_rows_rasterized: non_neg_integer(),
  last_emitted_frame_seq: non_neg_integer(),
  last_frame_keyframe?: boolean(),
  last_title: String.t() | nil,
  last_window_bg: non_neg_integer() | nil,
  search_decoration_cache: term()
}

Functions

new()

@spec new() :: t()

Creates a fresh Caches struct with first-frame defaults.

reset_frontend_state(caches)

@spec reset_frontend_state(t()) :: t()

Clears frontend-retained state tracking after the frontend reports ready again.