From 06bfd625468bc9c5ca4ef9dff087df648edad6d2 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 17 Jun 2026 10:59:10 +0200 Subject: [PATCH] Remove dead legacy GLFW retained state --- docs/modernization/roadmap.md | 7 ++++ docs/modernization/tasks.md | 7 ++++ linux/src/main.cpp | 1 - src/platform_legacy/legacy_platform_state.cpp | 35 ------------------- src/platform_legacy/legacy_platform_state.h | 9 ----- .../windows_runtime_shell.cpp | 11 ++++++ src/platform_windows/windows_runtime_shell.h | 2 ++ src/platform_windows/windows_window_shell.cpp | 13 ++++--- webgl/src/main.cpp | 1 - 9 files changed, 33 insertions(+), 53 deletions(-) diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 82662fb4..17da248d 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 any retained + GLFW window state; the leftover `set_legacy_glfw_window*` surface is gone. +- `linux/src/main.cpp` and `webgl/src/main.cpp` no longer seed legacy GLFW + retained state at startup. +- `src/platform_windows/windows_window_shell.cpp` no longer keeps a function- + local `lastPoint` static inside the Win32 window proc; that mouse-position + state now lives in the retained runtime shell session pocket. - `src/platform_legacy/legacy_platform_services.*` now accepts an injected `LegacyGlfwPlatformShell` for Linux/WebGL `acquire_render_context`, `present_render_context`, and app-close callbacks. diff --git a/docs/modernization/tasks.md b/docs/modernization/tasks.md index 339c0327..b3ff4ba0 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 any retained + GLFW window state. +- `linux/src/main.cpp` and `webgl/src/main.cpp` no longer seed legacy GLFW + retained state. +- `src/platform_windows/windows_window_shell.cpp` no longer keeps a local + static mouse-position pocket; the Win32 window proc now reads that state + through the retained runtime shell session helpers. - `src/platform_legacy/legacy_platform_services.*` now uses an injected `LegacyGlfwPlatformShell` for the remaining Linux/WebGL acquire/present/request-close path. diff --git a/linux/src/main.cpp b/linux/src/main.cpp index d6af60b8..4fe4d3bc 100644 --- a/linux/src/main.cpp +++ b/linux/src/main.cpp @@ -64,7 +64,6 @@ int main(int argc, char** args) printf("could not create window\n"); return 1; } - pp::platform::legacy::set_legacy_glfw_window(wnd); pp::platform::linux_desktop::set_fps_title_callback([wnd](std::string title) { glfwSetWindowTitle(wnd, title.c_str()); }); diff --git a/src/platform_legacy/legacy_platform_state.cpp b/src/platform_legacy/legacy_platform_state.cpp index fbd171e8..12f30af0 100644 --- a/src/platform_legacy/legacy_platform_state.cpp +++ b/src/platform_legacy/legacy_platform_state.cpp @@ -2,10 +2,6 @@ #include "platform_legacy/legacy_platform_state.h" #include "platform_api/platform_policy.h" -#if defined(__LINUX__) || defined(__WEB__) -#include -#endif - void webgl_pick_file_save( const std::string& path, const std::string& name, @@ -21,12 +17,6 @@ struct RetainedLegacyAndroidStoragePaths final { }; #endif -#if defined(__LINUX__) || defined(__WEB__) -struct RetainedLegacyGlfwPlatformState final { - GLFWwindow* window = nullptr; -}; -#endif - struct RetainedLegacyWebPlatformServicesBinding final { pp::platform::WebPlatformServices* services = nullptr; }; @@ -39,14 +29,6 @@ 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; @@ -92,23 +74,6 @@ public: } -#if defined(__LINUX__) || defined(__WEB__) -void set_legacy_glfw_window(GLFWwindow* window) -{ - retained_legacy_glfw_platform_state().window = window; -} - -void set_legacy_glfw_window_title(std::string_view title) -{ - auto* const window = retained_legacy_glfw_platform_state().window; - if (!window) - return; - - const std::string title_value(title); - glfwSetWindowTitle(window, title_value.c_str()); -} -#endif - [[nodiscard]] pp::platform::WebPlatformServices& active_legacy_web_platform_services() { if (auto* services = retained_legacy_web_platform_services_binding().services) diff --git a/src/platform_legacy/legacy_platform_state.h b/src/platform_legacy/legacy_platform_state.h index f2144f0e..a816531e 100644 --- a/src/platform_legacy/legacy_platform_state.h +++ b/src/platform_legacy/legacy_platform_state.h @@ -5,17 +5,8 @@ #include "platform_api/platform_policy.h" #include "platform_api/platform_services.h" -#if __LINUX__ || __WEB__ -struct GLFWwindow; -#endif - namespace pp::platform::legacy { -#if defined(__LINUX__) || defined(__WEB__) -void set_legacy_glfw_window(GLFWwindow* window); -void set_legacy_glfw_window_title(std::string_view title); -#endif - [[nodiscard]] pp::platform::WebPlatformServices& active_legacy_web_platform_services(); [[nodiscard]] std::unique_ptr create_legacy_web_platform_services(); void set_legacy_web_platform_services(pp::platform::WebPlatformServices* services); diff --git a/src/platform_windows/windows_runtime_shell.cpp b/src/platform_windows/windows_runtime_shell.cpp index 76b34908..136f4d0b 100644 --- a/src/platform_windows/windows_runtime_shell.cpp +++ b/src/platform_windows/windows_runtime_shell.cpp @@ -19,6 +19,7 @@ namespace { struct RetainedMainWindowSessionState final { HWND handle{}; wchar_t title[512]{}; + POINT last_point{}; bool sandboxed = false; }; @@ -169,6 +170,16 @@ void set_main_window_sandboxed(bool sandboxed) noexcept retained_main_window_session_state().sandboxed = sandboxed; } +POINT main_window_last_point() noexcept +{ + return retained_main_window_session_state().last_point; +} + +void set_main_window_last_point(POINT point) noexcept +{ + retained_main_window_session_state().last_point = point; +} + int run_main_application(int argc, char** argv) { const auto instance = GetModuleHandle(NULL); diff --git a/src/platform_windows/windows_runtime_shell.h b/src/platform_windows/windows_runtime_shell.h index fb113c05..18a1d94c 100644 --- a/src/platform_windows/windows_runtime_shell.h +++ b/src/platform_windows/windows_runtime_shell.h @@ -18,5 +18,7 @@ void release_bound_app() noexcept; [[nodiscard]] const wchar_t* main_window_title() noexcept; [[nodiscard]] bool main_window_sandboxed() noexcept; void set_main_window_sandboxed(bool sandboxed) noexcept; +[[nodiscard]] POINT main_window_last_point() noexcept; +void set_main_window_last_point(POINT point) noexcept; } diff --git a/src/platform_windows/windows_window_shell.cpp b/src/platform_windows/windows_window_shell.cpp index 455417a0..87c4d49e 100644 --- a/src/platform_windows/windows_window_shell.cpp +++ b/src/platform_windows/windows_window_shell.cpp @@ -67,7 +67,6 @@ pp::platform::windows::VrShellState& pp::platform::windows::retained_vr_shell_st LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { auto* app = bound_app(); - static glm::vec2 lastPoint; auto extra = GetMessageExtraInfo(); @@ -150,9 +149,9 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) }); break; case WM_MOUSEMOVE: - lastPoint = { GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }; + set_main_window_last_point({ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }); { - auto pt = lastPoint; + auto pt = main_window_last_point(); auto& tablet = active_wacom_tablet(); app->ui_task_async([app, pt, extra, p = tablet.get_pressure()] { auto& ui_tablet = active_wacom_tablet(); @@ -164,7 +163,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_LBUTTONDOWN: { SetCapture(hWnd); - auto pt = lastPoint; + auto pt = main_window_last_point(); auto& tablet = active_wacom_tablet(); app->ui_task_async([app, pt, extra, p = tablet.get_pressure()] { auto& ui_tablet = active_wacom_tablet(); @@ -176,7 +175,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_LBUTTONUP: { ReleaseCapture(); - auto pt = lastPoint; + auto pt = main_window_last_point(); app->ui_task_async([app, pt, extra] { auto& tablet = active_wacom_tablet(); tablet.reset_pressure(); @@ -188,7 +187,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_RBUTTONDOWN: { SetCapture(hWnd); - auto pt = lastPoint; + auto pt = main_window_last_point(); app->ui_task_async([app, pt, extra] { const auto& tablet = active_wacom_tablet(); app->mouse_down(1, (float)pt.x, (float)pt.y, 1.f, resolve_pointer_source(tablet, extra), 0); @@ -198,7 +197,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_RBUTTONUP: { ReleaseCapture(); - auto pt = lastPoint; + auto pt = main_window_last_point(); app->ui_task_async([app, pt, extra] { const auto& tablet = active_wacom_tablet(); app->mouse_up(1, (float)pt.x, (float)pt.y, resolve_pointer_source(tablet, extra), 0); diff --git a/webgl/src/main.cpp b/webgl/src/main.cpp index 82eed67f..a5e38018 100644 --- a/webgl/src/main.cpp +++ b/webgl/src/main.cpp @@ -202,7 +202,6 @@ int main() if (glfwInit() != GL_TRUE) printf("Failed to init GLFW"); wnd = glfwCreateWindow(1024, 768, "PanoPainter", nullptr, nullptr); - pp::platform::legacy::set_legacy_glfw_window(wnd); g_platform_services = pp::platform::legacy::create_platform_services({ .acquire_render_context = [wnd] { glfwMakeContextCurrent(wnd); }, .present_render_context = [wnd] { glfwSwapBuffers(wnd); },