Abort an in-flight application — the streaming ordering, any held newest
ordering, AND a selected ordering still awaiting its first completed draw.
Safe by construction now that a stream writes into the INACTIVE
buffer: abandoning one mid-slice discards a partially-written buffer
that was never drawn, and the displayed ordering is untouched. (Before
double-buffering this left the live attribute holding a mix of old and
new indices.) Callers: both identity writers (the commit path),
LOD-demotion detection in the coordinator's pump, node release,
geometry dispose.
None of those orderings completed a draw, so all are abandoned (issue
#713). State is removed BEFORE hooks fire so re-entrant cleanup cannot
observe half-cancelled ownership or close a callback twice.
Abort an in-flight application — the streaming ordering, any held newest ordering, AND a selected ordering still awaiting its first completed draw.
Safe by construction now that a stream writes into the INACTIVE buffer: abandoning one mid-slice discards a partially-written buffer that was never drawn, and the displayed ordering is untouched. (Before double-buffering this left the live attribute holding a mix of old and new indices.) Callers: both identity writers (the commit path), LOD-demotion detection in the coordinator's pump, node release, geometry dispose.
None of those orderings completed a draw, so all are abandoned (issue #713). State is removed BEFORE hooks fire so re-entrant cleanup cannot observe half-cancelled ownership or close a callback twice.