From 4a5b55f58a536e06c20ecf9c938237d9c01b2451 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 17 Jun 2026 12:07:13 +0200 Subject: [PATCH] Move Win32 bindings into runtime state --- .../windows_runtime_shell.cpp | 23 ----------------- src/platform_windows/windows_runtime_shell.h | 7 +----- .../windows_runtime_state.cpp | 25 +++++++++++++++++++ src/platform_windows/windows_runtime_state.h | 4 +++ 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/platform_windows/windows_runtime_shell.cpp b/src/platform_windows/windows_runtime_shell.cpp index 67b91e99..8b21ac79 100644 --- a/src/platform_windows/windows_runtime_shell.cpp +++ b/src/platform_windows/windows_runtime_shell.cpp @@ -10,32 +10,9 @@ #include "platform_windows/windows_runtime_state.h" #include "platform_windows/windows_stylus_input.h" #include "platform_windows/windows_window_shell.h" -#include "wacom.h" namespace pp::platform::windows { -void bind_app(App* app) noexcept -{ - App::I = app; -} - -App* bound_app() noexcept -{ - return App::I; -} - -void release_bound_app() noexcept -{ - bind_app(nullptr); - bind_runtime(nullptr); - retained_owned_app().reset(); -} - -WacomTablet* bound_wacom_tablet() noexcept -{ - return &retained_wacom_tablet(); -} - 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 2c63e0f4..f359cc57 100644 --- a/src/platform_windows/windows_runtime_shell.h +++ b/src/platform_windows/windows_runtime_shell.h @@ -1,14 +1,9 @@ #pragma once -class App; -class WacomTablet; +#include "platform_windows/windows_runtime_state.h" namespace pp::platform::windows { int run_main_application(int argc, char** argv); -void bind_app(App* app) noexcept; -[[nodiscard]] App* bound_app() noexcept; -void release_bound_app() noexcept; -[[nodiscard]] WacomTablet* bound_wacom_tablet() noexcept; } diff --git a/src/platform_windows/windows_runtime_state.cpp b/src/platform_windows/windows_runtime_state.cpp index 46847b4c..c5e4f365 100644 --- a/src/platform_windows/windows_runtime_state.cpp +++ b/src/platform_windows/windows_runtime_state.cpp @@ -11,6 +11,7 @@ namespace { struct RetainedWindowsRuntimeState final { std::unique_ptr owned_app; + App* app = nullptr; AppRuntime* runtime = nullptr; WacomTablet tablet; }; @@ -23,6 +24,30 @@ struct RetainedWindowsRuntimeState final { } +void bind_app(App* app) noexcept +{ + auto& state = retained_runtime_state(); + state.app = app; + App::I = app; +} + +App* bound_app() noexcept +{ + return retained_runtime_state().app; +} + +void release_bound_app() noexcept +{ + bind_app(nullptr); + bind_runtime(nullptr); + retained_owned_app().reset(); +} + +WacomTablet* bound_wacom_tablet() noexcept +{ + return &retained_wacom_tablet(); +} + std::unique_ptr& retained_owned_app() noexcept { return retained_runtime_state().owned_app; diff --git a/src/platform_windows/windows_runtime_state.h b/src/platform_windows/windows_runtime_state.h index 48e25f33..8e6c594a 100644 --- a/src/platform_windows/windows_runtime_state.h +++ b/src/platform_windows/windows_runtime_state.h @@ -8,6 +8,10 @@ class WacomTablet; namespace pp::platform::windows { +void bind_app(App* app) noexcept; +[[nodiscard]] App* bound_app() noexcept; +void release_bound_app() noexcept; +[[nodiscard]] WacomTablet* bound_wacom_tablet() noexcept; [[nodiscard]] std::unique_ptr& retained_owned_app() noexcept; [[nodiscard]] WacomTablet& retained_wacom_tablet() noexcept; [[nodiscard]] AppRuntime* retained_bound_runtime() noexcept;