From f45fc8226cd9e9288c0cb2afcd3eccbe9a4ccb2a Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 17 Jun 2026 10:34:26 +0200 Subject: [PATCH] Remove dead legacy storage fallback and hide GLFW state --- docs/modernization/roadmap.md | 10 ++++ docs/modernization/tasks.md | 9 ++++ linux/src/main.cpp | 4 +- src/legacy_app_startup_services.cpp | 7 --- .../legacy_platform_services.cpp | 2 +- src/platform_legacy/legacy_platform_state.cpp | 50 +++++++------------ src/platform_legacy/legacy_platform_state.h | 8 --- webgl/src/main.cpp | 4 +- 8 files changed, 43 insertions(+), 51 deletions(-) diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index d7aa115a..10201500 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -70,6 +70,13 @@ What is already real: - `pp_app_core` Latest slice: +- `src/platform_legacy/legacy_platform_state.*` no longer carries the dead + generic storage-path singleton for the current runtime matrix. +- `src/platform_legacy/legacy_platform_services.cpp` now drops the dead generic + storage-path fallback read; only the platform-specific storage-path branches + remain live. +- `src/legacy_app_startup_services.cpp` no longer seeds the dead generic + storage-path fallback state on non-Android startup. - `src/platform_legacy/legacy_platform_services.cpp` now reads Android storage paths from Android-owned retained state instead of the shared legacy storage-path singleton. @@ -80,6 +87,9 @@ Latest slice: `src/platform_legacy/legacy_platform_state.*` now route the Linux FPS-title callback through a narrow legacy GLFW title helper instead of reaching into retained GLFW window state from `App::set_platform_services(...)`. +- `src/platform_legacy/legacy_platform_state.h` no longer exports the raw + retained GLFW window-state accessor; callers now go through narrow GLFW + helpers only. - `src/platform_apple/apple_platform_state.cpp` no longer reads Apple storage paths from `pp::platform::legacy::active_legacy_storage_paths()`; Apple-owned retained state now carries that path bundle. diff --git a/docs/modernization/tasks.md b/docs/modernization/tasks.md index af3ab825..40f9dfac 100644 --- a/docs/modernization/tasks.md +++ b/docs/modernization/tasks.md @@ -78,6 +78,13 @@ Completed, blocked, and superseded task history moved to the queue is now ordered by code movement instead. Current slice: +- `src/platform_legacy/legacy_platform_state.*` no longer keeps the dead + generic storage-path singleton for the current platform matrix. +- `src/platform_legacy/legacy_platform_services.cpp` now returns only + platform-specific storage-path branches; the dead generic fallback read is + gone. +- `src/legacy_app_startup_services.cpp` no longer writes the dead generic + storage-path fallback state on non-Android startup. - `src/platform_legacy/legacy_platform_services.cpp` plus `src/platform_legacy/legacy_platform_state.*` now give Android its own retained storage-path surface instead of reading the shared legacy singleton. @@ -87,6 +94,8 @@ Current slice: `src/platform_legacy/legacy_platform_state.*` now use a narrow GLFW title helper for Linux FPS-title updates instead of direct retained-window access in the app event layer. +- `src/platform_legacy/legacy_platform_state.h` no longer exports the raw + retained GLFW window accessor. - `src/platform_apple/apple_platform_state.cpp` now reads Apple storage paths from Apple-owned retained state rather than the shared legacy storage-path singleton. diff --git a/linux/src/main.cpp b/linux/src/main.cpp index d9e15c35..5a5ea828 100644 --- a/linux/src/main.cpp +++ b/linux/src/main.cpp @@ -65,6 +65,7 @@ int main(int argc, char** args) printf("could not create window\n"); return 1; } + pp::platform::legacy::set_legacy_glfw_window(wnd); glfwSetCursorPosCallback(wnd, [](GLFWwindow* wnd, double x, double y){ g_cursor_pos = glm::vec2(x, y); @@ -97,7 +98,7 @@ int main(int argc, char** args) }, true); }); - glfwMakeContextCurrent(wnd); + pp::platform::legacy::acquire_legacy_glfw_render_context(); if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { printf("Failed to initialize OpenGL context\n"); @@ -112,7 +113,6 @@ int main(int argc, char** args) umask(0); App::I = &app; - pp::platform::legacy::set_legacy_glfw_window(wnd); app.set_platform_services(platform_services.get()); app.initLog(); app.create(); diff --git a/src/legacy_app_startup_services.cpp b/src/legacy_app_startup_services.cpp index 974213c5..28551c9a 100644 --- a/src/legacy_app_startup_services.cpp +++ b/src/legacy_app_startup_services.cpp @@ -142,13 +142,6 @@ void execute_legacy_app_init_log(App& app) app.rec_path, app.tmp_path, }); -#else - pp::platform::legacy::set_legacy_storage_paths({ - app.data_path, - app.work_path, - app.rec_path, - app.tmp_path, - }); #endif //LogRemote::I.start(); diff --git a/src/platform_legacy/legacy_platform_services.cpp b/src/platform_legacy/legacy_platform_services.cpp index 581a65b6..48bda38b 100644 --- a/src/platform_legacy/legacy_platform_services.cpp +++ b/src/platform_legacy/legacy_platform_services.cpp @@ -86,7 +86,7 @@ public: #elif defined(__ANDROID__) return pp::platform::legacy::active_legacy_android_storage_paths(); #else - return pp::platform::legacy::active_legacy_storage_paths(); + return {}; #endif } diff --git a/src/platform_legacy/legacy_platform_state.cpp b/src/platform_legacy/legacy_platform_state.cpp index fbd859a9..54838690 100644 --- a/src/platform_legacy/legacy_platform_state.cpp +++ b/src/platform_legacy/legacy_platform_state.cpp @@ -15,26 +15,22 @@ void webgl_sync(); namespace pp::platform::legacy { namespace { -struct RetainedLegacyStoragePaths final { - pp::platform::PlatformStoragePaths storage_paths; -}; - #ifdef __ANDROID__ struct RetainedLegacyAndroidStoragePaths final { pp::platform::PlatformStoragePaths storage_paths; }; #endif +#if defined(__LINUX__) || defined(__WEB__) +struct RetainedLegacyGlfwPlatformState final { + GLFWwindow* window = nullptr; +}; +#endif + struct RetainedLegacyWebPlatformServicesBinding final { pp::platform::WebPlatformServices* services = nullptr; }; -[[nodiscard]] RetainedLegacyStoragePaths& retained_legacy_storage_paths() -{ - static RetainedLegacyStoragePaths state; - return state; -} - #ifdef __ANDROID__ [[nodiscard]] RetainedLegacyAndroidStoragePaths& retained_legacy_android_storage_paths() { @@ -43,6 +39,14 @@ struct RetainedLegacyWebPlatformServicesBinding final { } #endif +#if defined(__LINUX__) || defined(__WEB__) +[[nodiscard]] RetainedLegacyGlfwPlatformState& retained_legacy_glfw_platform_state() +{ + static RetainedLegacyGlfwPlatformState state; + return state; +} +#endif + [[nodiscard]] RetainedLegacyWebPlatformServicesBinding& retained_legacy_web_platform_services_binding() { static RetainedLegacyWebPlatformServicesBinding state; @@ -89,20 +93,14 @@ public: } #if defined(__LINUX__) || defined(__WEB__) -[[nodiscard]] RetainedLegacyGlfwWindowState& active_legacy_glfw_window_state() -{ - static RetainedLegacyGlfwWindowState state; - return state; -} - void set_legacy_glfw_window(GLFWwindow* window) { - active_legacy_glfw_window_state().window = window; + retained_legacy_glfw_platform_state().window = window; } void set_legacy_glfw_window_title(std::string_view title) { - auto* const window = active_legacy_glfw_window_state().window; + auto* const window = retained_legacy_glfw_platform_state().window; if (!window) return; @@ -112,17 +110,17 @@ void set_legacy_glfw_window_title(std::string_view title) void acquire_legacy_glfw_render_context() { - glfwMakeContextCurrent(active_legacy_glfw_window_state().window); + glfwMakeContextCurrent(retained_legacy_glfw_platform_state().window); } void present_legacy_glfw_render_context() { - glfwSwapBuffers(active_legacy_glfw_window_state().window); + glfwSwapBuffers(retained_legacy_glfw_platform_state().window); } void request_legacy_glfw_app_close() { - glfwSetWindowShouldClose(active_legacy_glfw_window_state().window, GLFW_TRUE); + glfwSetWindowShouldClose(retained_legacy_glfw_platform_state().window, GLFW_TRUE); } #endif @@ -220,16 +218,6 @@ void save_legacy_web_prepared_file( return true; } -[[nodiscard]] const pp::platform::PlatformStoragePaths& active_legacy_storage_paths() -{ - return retained_legacy_storage_paths().storage_paths; -} - -void set_legacy_storage_paths(pp::platform::PlatformStoragePaths paths) -{ - retained_legacy_storage_paths().storage_paths = std::move(paths); -} - #ifdef __ANDROID__ [[nodiscard]] const pp::platform::PlatformStoragePaths& active_legacy_android_storage_paths() { diff --git a/src/platform_legacy/legacy_platform_state.h b/src/platform_legacy/legacy_platform_state.h index ed57113b..a135a912 100644 --- a/src/platform_legacy/legacy_platform_state.h +++ b/src/platform_legacy/legacy_platform_state.h @@ -12,11 +12,6 @@ struct GLFWwindow; namespace pp::platform::legacy { #if defined(__LINUX__) || defined(__WEB__) -struct RetainedLegacyGlfwWindowState final { - GLFWwindow* window = nullptr; -}; - -[[nodiscard]] RetainedLegacyGlfwWindowState& active_legacy_glfw_window_state(); void set_legacy_glfw_window(GLFWwindow* window); void set_legacy_glfw_window_title(std::string_view title); void acquire_legacy_glfw_render_context(); @@ -49,9 +44,6 @@ void save_legacy_web_prepared_file( std::string_view suggested_name, pp::platform::PreparedFileCallback callback); -[[nodiscard]] const pp::platform::PlatformStoragePaths& active_legacy_storage_paths(); -void set_legacy_storage_paths(pp::platform::PlatformStoragePaths paths); - #ifdef __ANDROID__ [[nodiscard]] const pp::platform::PlatformStoragePaths& active_legacy_android_storage_paths(); void set_legacy_android_storage_paths(pp::platform::PlatformStoragePaths paths); diff --git a/webgl/src/main.cpp b/webgl/src/main.cpp index 57661e7a..ce667588 100644 --- a/webgl/src/main.cpp +++ b/webgl/src/main.cpp @@ -121,7 +121,6 @@ void CanvasOnWheel(float y) void StartApp() { App::I = &app; - pp::platform::legacy::set_legacy_glfw_window(wnd); pp::platform::legacy::set_legacy_web_platform_services(g_web_platform_services.get()); app.set_platform_services(g_platform_services.get()); app.initLog(); @@ -206,7 +205,8 @@ int main() if (glfwInit() != GL_TRUE) printf("Failed to init GLFW"); wnd = glfwCreateWindow(1024, 768, "PanoPainter", nullptr, nullptr); - glfwMakeContextCurrent(wnd); + pp::platform::legacy::set_legacy_glfw_window(wnd); + pp::platform::legacy::acquire_legacy_glfw_render_context(); /* glfwSetCursorPosCallback(wnd, [](GLFWwindow* wnd, double x, double y){