Move Win32 bindings into runtime state

This commit is contained in:
2026-06-17 12:07:13 +02:00
parent e343557a3f
commit 4a5b55f58a
4 changed files with 30 additions and 29 deletions

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -11,6 +11,7 @@ namespace {
struct RetainedWindowsRuntimeState final {
std::unique_ptr<App> 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<App>& retained_owned_app() noexcept
{
return retained_runtime_state().owned_app;

View File

@@ -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<App>& retained_owned_app() noexcept;
[[nodiscard]] WacomTablet& retained_wacom_tablet() noexcept;
[[nodiscard]] AppRuntime* retained_bound_runtime() noexcept;