Route app thread orchestration through app core

This commit is contained in:
2026-06-05 07:01:51 +02:00
parent 32c95b224f
commit c50ea14a2a
12 changed files with 749 additions and 64 deletions

View File

@@ -840,6 +840,11 @@ Known local toolchain state:
visibility, main UI suppression in VR-only mode, tick layout selection,
resize render-target/redraw projection, invalid resize rejection, and redraw
reset planning.
- `pp_app_core_app_thread_tests` covers render/UI task dispatch, immediate
same-thread execution, unique queued-task replacement, stopped-worker
no-wait behavior, render queue context wrapping, UI tick redraw scheduling,
UI-loop frame/FPS/reload timer thresholds, malformed timer rejection, redraw
frame-count projection, and thread start/stop intents.
- `pp_app_core_app_input_tests` covers pointer coordinate normalization,
invalid pointer/gesture inputs, designer-first mouse routing, mouse-cancel
routing, gesture midpoint/distance/delta math, main-layout routing, key state

File diff suppressed because one or more lines are too long

View File

@@ -212,6 +212,14 @@ touch-lock attachment now live in `pp_app_core`; `App::mouse_*`,
`App::set_stylus`, and `pano_cli plan-app-input` consume those plans while
retained event objects, child-node mutation, and legacy `Node` dispatch stay
in the app shell.
App thread orchestration decisions for render/UI task dispatch, unique queued
task replacement, queue draining, render-context wrapping, async redraw
notification, UI tick redraw scheduling, UI-loop timer/report/reload cadence,
and thread start/stop intents now live in `pp_app_core`; `App::render_task*`,
`App::ui_task*`, `App::async_redraw`, `App::render_thread_*`,
`App::ui_thread_*`, and `pano_cli plan-app-thread` consume those plans while
retained `std::thread`, condition-variable, OpenGL context, live reload, and
task execution remain in the app shell.
Shutdown lifecycle staging for UI-state save, stroke-preview renderer shutdown,
recording stop, texture/shader invalidation, layout unload, render-target
destruction, panel-node release, and quick-mode cleanup now lives in
@@ -1685,6 +1693,14 @@ Results:
`pano_cli_plan_app_input_stylus_smoke`,
`pano_cli_plan_app_input_rejects_bad_float`, and
`pano_cli_plan_app_input_rejects_missing_ui_panel`.
- `PanoPainter`, `pp_app_core_app_thread_tests`, and `pano_cli` built after
render/UI task dispatch, queue draining, UI-loop timer cadence, async redraw,
and start/stop decisions moved into `pp_app_core`.
- Focused app-thread CTest coverage passed for `pp_app_core_app_thread_tests`,
`pano_cli_plan_app_thread_dispatch_smoke`,
`pano_cli_plan_app_thread_ui_loop_smoke`,
`pano_cli_plan_app_thread_stop_smoke`, and
`pano_cli_plan_app_thread_rejects_bad_timer`.
- `PanoPainter`, `pp_app_core_app_shutdown_tests`, and `pano_cli` built after
shutdown cleanup staging moved into `pp_app_core`.
- Focused shutdown CTest coverage passed for `pp_app_core_app_shutdown_tests`,