refactor: purge CHandle from module internals (M14 R5)
Module-internal object references are Rust types now (values, Arc, Mutex); CHandle remains only at the oakengine C-ABI boundary: - oakundo: the global stack holds UndoStack/UndoCommand values directly (stack token is the static's address) - oaktimeline: marker/workarea boxes carry Arc<Mutex<T>>; commands share the same allocation through Arc clones (readers in oakengine stubs and the app's graphops updated to lock) - oaktask/oakstorage: sessions, write-through bindings and the database backend pass ProjectArc; the Session drops its manual release bookkeeping; nodeutil keeps the CHandle<->Arc boundary conversion (release_project restored for the app) - oakcodec: handle.rs deleted outright (no facade entry needed it); texture/block placeholders are unit structs - oakrender: copier's project handle is an identity u64; alive-count machinery removed; handle.rs is make_owned/get/get_mut only - oakplugin: the instance registry is gone (its unregister key never matched, leaking weak entries); handle.rs is the RefBox boundary type - oaknode/oakcommon: only dead guard/borrow helpers removed; external payload handles (texture/processor) documented as the boundary Flake hunts landed along the way: the audio recording test serializes on the shared manager lock with a normalized state; the autocacher cancel test uses a slow producer so cancellation is deterministic.
This commit is contained in:
@@ -35,9 +35,11 @@ pub const TRACK_INPUT_FORMAT: &str = "track_in_%1";
|
||||
pub struct SequenceBehavior {
|
||||
/// Track list node ids (video then audio, C++ order).
|
||||
pub track_lists: Vec<NodeId>,
|
||||
/// Timeline markers handle (oaktimeline, owned).
|
||||
/// Timeline markers handle (oaktimeline, owned; created lazily by
|
||||
/// the facade through the C ABI).
|
||||
pub markers: crate::handle::CHandle,
|
||||
/// Work area handle (oaktimeline, owned).
|
||||
/// Work area handle (oaktimeline, owned; created lazily by the
|
||||
/// facade through the C ABI).
|
||||
pub workarea: crate::handle::CHandle,
|
||||
/// Length cache (C++ last_length_).
|
||||
pub last_length: oakcore_rs::Rational,
|
||||
|
||||
Reference in New Issue
Block a user