Phase 4: Add modular graph editor and transactional graph edits
This commit is contained in:
parent
2ecc03b482
commit
5c41d7f6da
27 changed files with 1023 additions and 64 deletions
|
|
@ -28,7 +28,7 @@ stable node IDs, topological order, precomputed input adjacency, per-node mono
|
|||
buffers and oscillator/meter state. Each plan has one processing owner. Graph
|
||||
edits and destruction cannot affect an existing plan. All nodes are scheduled,
|
||||
including disconnected nodes; only explicit output nodes are rendered (or
|
||||
terminal nodes when no output node exists). See AUDIO_ENGINE.md for contracts.
|
||||
terminal nodes for legacy callers that do not require explicit outputs). See AUDIO_ENGINE.md for contracts.
|
||||
`xtc_realtime` now provides a one-pending/one-retired handoff around an
|
||||
exclusively audio-owned active plan. `xtc_backend` is the C backend boundary;
|
||||
the optional JACK implementation drives that same realtime engine.
|
||||
|
|
@ -51,4 +51,20 @@ on the GUI thread. A GUI timer reads snapshots and collects retired resources;
|
|||
no audio callback calls FLTK. Successful window close first closes the JACK
|
||||
client (synchronizing callbacks), then removes the GUI timer and hides the
|
||||
window. Failed close leaves both handle and window available for retry. View
|
||||
switching is GUI state only; editors have no domain mutations yet. See GUI.md.
|
||||
switching and node positions are GUI state only. Semantic edits use transactional
|
||||
C commands and publish independent compiled snapshots. See GUI.md.
|
||||
|
||||
## Editable graph and canvas
|
||||
|
||||
Phase 4 adds read-only C snapshots, monotonic node IDs, and a small set of C
|
||||
edit commands. The GUI owns an opaque graph handle, never private arrays.
|
||||
An edit produces a candidate, and the GUI commits it only after backend submit
|
||||
succeeds (or locally while offline). A busy pending slot or invalid edit leaves
|
||||
the prior model/plan unchanged. Active/submitted revisions distinguish the
|
||||
queued drawing from the engine's acknowledged plan. Empty/output-less editor
|
||||
graphs render silence; legacy offline terminal fallback remains available.
|
||||
|
||||
GraphWidget owns only selection, node positions, pointer gestures and drawing.
|
||||
Its fixed canvas is hosted by FLTK scrolling. C owns nodes, ports, edges,
|
||||
validation, ID assignment, compilation and rendering. No audio thread accesses
|
||||
GUI-owned state. Reconnect republishes the same retained editable graph.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue