From cf2fcd36e4b8542e79e3764e1c2b93179a4d8b61 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 17 Jun 2026 11:06:02 +0200 Subject: [PATCH] Trim legacy web binding and Win32 pointer state --- docs/modernization/roadmap.md | 9 ++++--- docs/modernization/tasks.md | 9 ++++--- src/platform_legacy/legacy_platform_state.cpp | 18 ------------- src/platform_legacy/legacy_platform_state.h | 1 - .../windows_runtime_shell.cpp | 11 -------- src/platform_windows/windows_runtime_shell.h | 2 -- src/platform_windows/windows_window_shell.cpp | 27 +++++++++---------- webgl/src/main.cpp | 3 ++- 8 files changed, 27 insertions(+), 53 deletions(-) diff --git a/docs/modernization/roadmap.md b/docs/modernization/roadmap.md index 17da248d..f33ea3da 100644 --- a/docs/modernization/roadmap.md +++ b/docs/modernization/roadmap.md @@ -70,13 +70,16 @@ What is already real: - `pp_app_core` Latest slice: +- `src/platform_legacy/legacy_platform_state.*` no longer keeps its own + retained Web platform-service binding; the legacy Web helper path now uses + the shared `platform_api` injection surface instead. - `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_windows/windows_window_shell.cpp` no longer keeps any retained + mouse-position pocket for button events; it now reads client coordinates + directly from the Win32 messages that already carry them. - `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 b3ff4ba0..3602099c 100644 --- a/docs/modernization/tasks.md +++ b/docs/modernization/tasks.md @@ -78,13 +78,16 @@ 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 a separate + retained Web platform-service binding; the Web helper path now uses the + shared `platform_api` injection hook. - `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_windows/windows_window_shell.cpp` no longer keeps any retained + mouse-position pocket for button events; it now reads client coordinates + directly from the Win32 messages that already carry them. - `src/platform_legacy/legacy_platform_services.*` now uses an injected `LegacyGlfwPlatformShell` for the remaining Linux/WebGL acquire/present/request-close path. diff --git a/src/platform_legacy/legacy_platform_state.cpp b/src/platform_legacy/legacy_platform_state.cpp index 12f30af0..883157de 100644 --- a/src/platform_legacy/legacy_platform_state.cpp +++ b/src/platform_legacy/legacy_platform_state.cpp @@ -17,10 +17,6 @@ struct RetainedLegacyAndroidStoragePaths final { }; #endif -struct RetainedLegacyWebPlatformServicesBinding final { - pp::platform::WebPlatformServices* services = nullptr; -}; - #ifdef __ANDROID__ [[nodiscard]] RetainedLegacyAndroidStoragePaths& retained_legacy_android_storage_paths() { @@ -29,12 +25,6 @@ struct RetainedLegacyWebPlatformServicesBinding final { } #endif -[[nodiscard]] RetainedLegacyWebPlatformServicesBinding& retained_legacy_web_platform_services_binding() -{ - static RetainedLegacyWebPlatformServicesBinding state; - return state; -} - class RetainedWebPlatformServices final : public pp::platform::WebPlatformServices { public: void publish_exported_image(std::string_view path) override @@ -76,9 +66,6 @@ public: [[nodiscard]] pp::platform::WebPlatformServices& active_legacy_web_platform_services() { - if (auto* services = retained_legacy_web_platform_services_binding().services) - return *services; - static RetainedWebPlatformServices services; return pp::platform::resolve_web_platform_services(services); } @@ -88,11 +75,6 @@ public: return std::make_unique(); } -void set_legacy_web_platform_services(pp::platform::WebPlatformServices* services) -{ - retained_legacy_web_platform_services_binding().services = services; -} - [[nodiscard]] bool handles_legacy_web_platform_family(pp::platform::PlatformFamily family) noexcept { return family == pp::platform::PlatformFamily::webgl; diff --git a/src/platform_legacy/legacy_platform_state.h b/src/platform_legacy/legacy_platform_state.h index a816531e..b6cac9f7 100644 --- a/src/platform_legacy/legacy_platform_state.h +++ b/src/platform_legacy/legacy_platform_state.h @@ -9,7 +9,6 @@ namespace pp::platform::legacy { [[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); [[nodiscard]] bool handles_legacy_web_platform_family(pp::platform::PlatformFamily family) noexcept; void publish_legacy_web_exported_image(std::string_view path); [[nodiscard]] bool try_publish_legacy_web_exported_image( diff --git a/src/platform_windows/windows_runtime_shell.cpp b/src/platform_windows/windows_runtime_shell.cpp index 136f4d0b..76b34908 100644 --- a/src/platform_windows/windows_runtime_shell.cpp +++ b/src/platform_windows/windows_runtime_shell.cpp @@ -19,7 +19,6 @@ namespace { struct RetainedMainWindowSessionState final { HWND handle{}; wchar_t title[512]{}; - POINT last_point{}; bool sandboxed = false; }; @@ -170,16 +169,6 @@ 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 18a1d94c..fb113c05 100644 --- a/src/platform_windows/windows_runtime_shell.h +++ b/src/platform_windows/windows_runtime_shell.h @@ -18,7 +18,5 @@ 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 87c4d49e..068b1081 100644 --- a/src/platform_windows/windows_window_shell.cpp +++ b/src/platform_windows/windows_window_shell.cpp @@ -149,21 +149,20 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) }); break; case WM_MOUSEMOVE: - set_main_window_last_point({ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }); - { - 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(); - app->mouse_move((float)pt.x, (float)pt.y, p, - resolve_pointer_source(ui_tablet, extra), ui_tablet.m_eraser); - }); - } + { + POINT pt{ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }; + auto& tablet = active_wacom_tablet(); + app->ui_task_async([app, pt, extra, p = tablet.get_pressure()] { + auto& ui_tablet = active_wacom_tablet(); + app->mouse_move((float)pt.x, (float)pt.y, p, + resolve_pointer_source(ui_tablet, extra), ui_tablet.m_eraser); + }); break; + } case WM_LBUTTONDOWN: { SetCapture(hWnd); - auto pt = main_window_last_point(); + POINT pt{ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }; auto& tablet = active_wacom_tablet(); app->ui_task_async([app, pt, extra, p = tablet.get_pressure()] { auto& ui_tablet = active_wacom_tablet(); @@ -175,7 +174,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_LBUTTONUP: { ReleaseCapture(); - auto pt = main_window_last_point(); + POINT pt{ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }; app->ui_task_async([app, pt, extra] { auto& tablet = active_wacom_tablet(); tablet.reset_pressure(); @@ -187,7 +186,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_RBUTTONDOWN: { SetCapture(hWnd); - auto pt = main_window_last_point(); + POINT pt{ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }; 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); @@ -197,7 +196,7 @@ LRESULT CALLBACK main_window_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) case WM_RBUTTONUP: { ReleaseCapture(); - auto pt = main_window_last_point(); + POINT pt{ GET_X_LPARAM(lp), GET_Y_LPARAM(lp) }; 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 a5e38018..16efb3e0 100644 --- a/webgl/src/main.cpp +++ b/webgl/src/main.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -121,7 +122,7 @@ void CanvasOnWheel(float y) void StartApp() { App::I = &app; - pp::platform::legacy::set_legacy_web_platform_services(g_web_platform_services.get()); + pp::platform::set_injected_web_platform_services(g_web_platform_services.get()); app.set_platform_services(g_platform_services.get()); app.initLog(); app.create();