From e1767bdb00a15e56b08614715dd539733e57b601 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 17 Jun 2026 12:11:13 +0200 Subject: [PATCH] Trim Win32 lifecycle retained state --- docs/modernization/roadmap.md | 5 +++++ docs/modernization/tasks.md | 5 +++++ src/platform_windows/windows_lifecycle_shell.cpp | 2 +- src/platform_windows/windows_lifecycle_state.cpp | 6 ------ src/platform_windows/windows_lifecycle_state.h | 1 - 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 9b459769..65f0c62a 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -92,6 +92,11 @@ Latest slice: entrypoint header that picks up the retained binding surface from `windows_runtime_state.h` instead of declaring a second shell-owned binding API. +- `src/platform_windows/windows_lifecycle_shell.cpp` now formats the FPS title + with a stack buffer at the callsite instead of routing through a retained + lifecycle-global scratch array. +- `src/platform_windows/windows_lifecycle_state.*` is down to the retained + Win32 running flag only; the redundant global FPS-title buffer is gone. - `src/platform_windows/windows_runtime_session.*` now owns the bound-session Win32 runtime loop/startup/shutdown body that had still been sitting inside `windows_runtime_flow.cpp`. diff --git a/docs/modernization/tasks.md b/docs/modernization/tasks.md index 3d8e34eb..ee84e158 100644 --- a/docs/modernization/tasks.md +++ b/docs/modernization/tasks.md @@ -98,6 +98,11 @@ Current slice: - `src/platform_windows/windows_runtime_shell.h` is thinner again and now imports that binding surface from `windows_runtime_state.h` instead of declaring shell-owned bind/release accessors itself. +- `src/platform_windows/windows_lifecycle_shell.cpp` now formats the FPS title + with a stack buffer at the callsite instead of keeping a retained + lifecycle-global scratch array. +- `src/platform_windows/windows_lifecycle_state.*` is now down to the Win32 + running flag only; the redundant global FPS-title buffer is gone. - `src/platform_windows/windows_runtime_session.*` now owns the bound-session Win32 runtime loop/startup/shutdown body. - `src/platform_windows/windows_runtime_flow.cpp` is now only a thin handoff diff --git a/src/platform_windows/windows_lifecycle_shell.cpp b/src/platform_windows/windows_lifecycle_shell.cpp index 5d2ca47d..ca3ab9b1 100644 --- a/src/platform_windows/windows_lifecycle_shell.cpp +++ b/src/platform_windows/windows_lifecycle_shell.cpp @@ -40,7 +40,7 @@ void update_stylus_frame(float dt) void update_window_fps(HWND hWnd, const wchar_t* window_title, VrShellState& vr, int frames) { - auto* title_fps = retained_window_fps_title_buffer(); + wchar_t title_fps[512]{}; const int vr_fps = current_vr_fps(vr); if (read_vr_session_snapshot(vr).vr_active) swprintf_s(title_fps, 512, L"%s - %d fps - %d vr fps", window_title, frames, vr_fps); diff --git a/src/platform_windows/windows_lifecycle_state.cpp b/src/platform_windows/windows_lifecycle_state.cpp index d7c5bf98..80c52a28 100644 --- a/src/platform_windows/windows_lifecycle_state.cpp +++ b/src/platform_windows/windows_lifecycle_state.cpp @@ -7,7 +7,6 @@ namespace { struct RetainedWindowLifecycleState final { std::atomic running{-1}; - wchar_t title_fps[512]{}; }; [[nodiscard]] RetainedWindowLifecycleState& retained_window_lifecycle_state() noexcept @@ -38,9 +37,4 @@ std::atomic& retained_lifecycle_running_state() noexcept return retained_window_lifecycle_state().running; } -wchar_t* retained_window_fps_title_buffer() noexcept -{ - return retained_window_lifecycle_state().title_fps; -} - } diff --git a/src/platform_windows/windows_lifecycle_state.h b/src/platform_windows/windows_lifecycle_state.h index ff8aa264..5f97a18a 100644 --- a/src/platform_windows/windows_lifecycle_state.h +++ b/src/platform_windows/windows_lifecycle_state.h @@ -10,6 +10,5 @@ void mark_lifecycle_running() noexcept; void mark_lifecycle_stopped() noexcept; [[nodiscard]] bool lifecycle_is_running() noexcept; [[nodiscard]] std::atomic& retained_lifecycle_running_state() noexcept; -[[nodiscard]] wchar_t* retained_window_fps_title_buffer() noexcept; }