Own grid workers and thin Apple platform bridge

This commit is contained in:
2026-06-16 07:02:49 +02:00
parent 953fa11744
commit 75f57213ca
8 changed files with 292 additions and 57 deletions

View File

@@ -42,13 +42,15 @@ Completed, blocked, and superseded task history moved to
`src/node_canvas.cpp`, `src/app.cpp`, and `src/app_dialogs.cpp`.
- The platform boundary is not finished:
- `pp_platform_api` still compiles Apple implementation files
- Apple platform services still reach `App::I`
- Linux FPS title reporting now uses an injected callback, but broader
platform-to-app singleton reach is still open
- `platform_apple` no longer reaches `App::I` directly, and Linux FPS title
reporting now uses an injected callback, but retained Apple bridging and
broader platform-to-app singleton reach are still open in
`platform_legacy`
- `platform_legacy` is still part of the live app shell
- The app runtime boundary is not finished:
- render/UI queues are static `App` state
- detached workers still launch from canvas, grid, preview, and event code
- detached workers still launch from canvas, preview, document export, and
recording code
- thread-affinity rules are enforced by convention and asserts instead of
explicit runtime contracts
- The UI ownership boundary is not finished:
@@ -125,6 +127,9 @@ Current slice:
- `NodeStrokePreview` final composite plus preview-texture copy now route
through `legacy_node_stroke_preview_execution_services.h`, but the preview
node still owns most live-pass and retained GL resource execution.
- `NodeCanvas` display resolve for the `m_density != 1.f` path now routes
through `legacy_canvas_draw_merge_services.h`, but the cache-to-screen
composite block and broader canvas draw orchestration are still inline.
Write scope:
- `src/node_stroke_preview.cpp`
@@ -348,7 +353,10 @@ Current slice:
moving behind owned runtime/service objects
- brush package import/export now use service-owned `std::jthread` workers and
UI-thread completion handoff
- canvas, grid, preview, and event-side detached work is still open
- prepared-file save work and grid lightmap launch now also use service-owned
workers with explicit UI-thread handoff
- canvas, preview, document export, and recording-side detached work are still
open
Write scope:
- `src/canvas.cpp`
@@ -547,8 +555,10 @@ which means the platform layer is not a platform layer yet.
Current slice:
- Linux FPS title updates now route through an injected callback installed from
`App::set_platform_services()`
- Apple singleton reach and the remaining platform callback surface are still
open
- `platform_apple` clipboard, display/share, cursor, and save-ui-state calls
now route through injected Apple bridge callbacks instead of `App::I`
- retained Apple callback injection and broader `platform_legacy` singleton
reach are still open
Write scope:
- `src/platform_apple/*`