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 byContentHelpers.build_render_ctx/3; cleared when the fingerprint changes.block_render_cacheis a within-frame cache reset after each window render. - Emit (
emit_prev_*,last_title,last_window_bg): consumed byFrontend.Emitstage 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
@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() }