engine: complete C ABI facade (liboakengine oakengine_* surface)

The full pure-C facade used by the app: node/project/timeline/viewer/
undo/task/events/serializer/playback/preview/renderer/gizmo/color/
audio/footage/proxy/encoding/exporter/config/disk/ipc/plugin/worker
families, plus undo-group semantics, display renderer handles,
NodeFactory accessors, and per-family pure-C engine tests.
This commit is contained in:
2026-07-26 22:43:00 +08:00
parent c486c853ff
commit e9f173916f
80 changed files with 28715 additions and 126 deletions
+11
View File
@@ -220,6 +220,16 @@ static void test_validation(OakEngineSequence *seq)
oakengine_audio_free(NULL);
}
static void test_render_cache_helpers(void)
{
// Without an active RenderManager, these return OAKENGINE_E_STATE rather
// than crashing.
assert(oakengine_render_cache_set_display_color_processor(NULL) ==
OAKENGINE_E_STATE);
assert(oakengine_render_cache_set_multicam_node(NULL) ==
OAKENGINE_E_STATE);
}
int main(void)
{
make_tmpdir();
@@ -241,6 +251,7 @@ int main(void)
OakEngineSequence *seq = oakengine_sequence_new(project, "Render");
assert(seq != NULL);
test_render_cache_helpers();
test_validation(seq);
// ---- GL-gated part ---------------------------------------------------