Own Windows tablet path and thin legacy web fallback

This commit is contained in:
2026-06-17 09:55:13 +02:00
parent 4c91701e11
commit ea1845d924
7 changed files with 65 additions and 27 deletions

View File

@@ -259,9 +259,9 @@ public:
void publish_exported_image(std::string_view path) override
{
const auto family = pp::platform::current_platform_family();
if (family == pp::platform::PlatformFamily::webgl)
if (pp::platform::legacy::handles_legacy_web_platform_family(family))
{
pp::platform::legacy::active_legacy_web_platform_services().publish_exported_image(path);
pp::platform::legacy::publish_legacy_web_exported_image(path);
return;
}
if (!pp::platform::platform_publishes_exported_images(family))
@@ -279,9 +279,9 @@ public:
void flush_persistent_storage() override
{
const auto family = pp::platform::current_platform_family();
if (family == pp::platform::PlatformFamily::webgl)
if (pp::platform::legacy::handles_legacy_web_platform_family(family))
{
pp::platform::legacy::active_legacy_web_platform_services().flush_persistent_storage();
pp::platform::legacy::flush_legacy_web_persistent_storage();
return;
}
if (!pp::platform::platform_flushes_persistent_storage(family))
@@ -449,8 +449,8 @@ public:
[[nodiscard]] int default_canvas_resolution() override
{
const auto family = pp::platform::current_platform_family();
if (family == pp::platform::PlatformFamily::webgl)
return pp::platform::legacy::active_legacy_web_platform_services().default_canvas_resolution();
if (pp::platform::legacy::handles_legacy_web_platform_family(family))
return pp::platform::legacy::default_legacy_web_canvas_resolution();
return pp::platform::platform_default_canvas_resolution(family);
}
@@ -527,12 +527,9 @@ public:
pp::platform::PreparedFileCallback callback) override
{
const auto family = pp::platform::current_platform_family();
if (family == pp::platform::PlatformFamily::webgl)
if (pp::platform::legacy::handles_legacy_web_platform_family(family))
{
pp::platform::legacy::active_legacy_web_platform_services().save_prepared_file(
path,
suggested_name,
std::move(callback));
pp::platform::legacy::save_legacy_web_prepared_file(path, suggested_name, std::move(callback));
return;
}

View File

@@ -98,6 +98,37 @@ void request_legacy_glfw_app_close()
return pp::platform::resolve_web_platform_services(services);
}
[[nodiscard]] bool handles_legacy_web_platform_family(pp::platform::PlatformFamily family) noexcept
{
return family == pp::platform::PlatformFamily::webgl;
}
void publish_legacy_web_exported_image(std::string_view path)
{
active_legacy_web_platform_services().publish_exported_image(path);
}
void flush_legacy_web_persistent_storage()
{
active_legacy_web_platform_services().flush_persistent_storage();
}
[[nodiscard]] int default_legacy_web_canvas_resolution() noexcept
{
return active_legacy_web_platform_services().default_canvas_resolution();
}
void save_legacy_web_prepared_file(
std::string_view path,
std::string_view suggested_name,
pp::platform::PreparedFileCallback callback)
{
active_legacy_web_platform_services().save_prepared_file(
path,
suggested_name,
std::move(callback));
}
[[nodiscard]] const pp::platform::PlatformStoragePaths& active_legacy_storage_paths()
{
return retained_legacy_storage_paths().storage_paths;

View File

@@ -1,5 +1,6 @@
#pragma once
#include "platform_api/platform_policy.h"
#include "platform_api/platform_services.h"
#if __LINUX__ || __WEB__
@@ -21,6 +22,14 @@ void request_legacy_glfw_app_close();
#endif
[[nodiscard]] pp::platform::WebPlatformServices& active_legacy_web_platform_services();
[[nodiscard]] bool handles_legacy_web_platform_family(pp::platform::PlatformFamily family) noexcept;
void publish_legacy_web_exported_image(std::string_view path);
void flush_legacy_web_persistent_storage();
[[nodiscard]] int default_legacy_web_canvas_resolution() noexcept;
void save_legacy_web_prepared_file(
std::string_view path,
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);

View File

@@ -19,7 +19,7 @@ namespace {
struct RetainedWindowsRuntimeState final {
std::unique_ptr<App> owned_app;
App* app = nullptr;
WacomTablet* tablet = nullptr;
WacomTablet tablet;
};
[[nodiscard]] RetainedWindowsRuntimeState& retained_runtime_state()
@@ -56,7 +56,6 @@ void install_debug_gl_callbacks()
void initialize_wintab(HWND hWnd, bool sandboxed)
{
auto* tablet = bound_wacom_tablet();
assert(tablet);
if (!sandboxed)
{
LOG("init WinTab");
@@ -111,8 +110,7 @@ void run_main_message_loop()
void shutdown_main_window_runtime(const MainWindowStartupState& startup, HINSTANCE hInst)
{
if (auto* tablet = retained_runtime_state().tablet)
tablet->terminate();
retained_runtime_state().tablet.terminate();
UnregisterClass(startup.window_class.lpszClassName, hInst);
LogRemote::I.stop();
}
@@ -137,14 +135,9 @@ void release_bound_app() noexcept
state.owned_app.reset();
}
void bind_wacom_tablet(WacomTablet* tablet) noexcept
{
retained_runtime_state().tablet = tablet;
}
WacomTablet* bound_wacom_tablet() noexcept
{
return retained_runtime_state().tablet;
return &retained_runtime_state().tablet;
}
HWND main_window_handle() noexcept
@@ -176,7 +169,6 @@ int run_main_application(int argc, char** argv)
runtime_state.owned_app = std::make_unique<App>();
auto* app = runtime_state.owned_app.get();
bind_app(app);
bind_wacom_tablet(&WacomTablet::I);
app->set_platform_services(&pp::platform::windows::platform_services());
app->initLog();
@@ -206,11 +198,9 @@ int run_main_application(int argc, char** argv)
break;
case pp::platform::windows::MainStartupResult::GladLoadFailure:
release_bound_app();
bind_wacom_tablet(nullptr);
return 0;
case pp::platform::windows::MainStartupResult::MissingCoreContextSupport:
release_bound_app();
bind_wacom_tablet(nullptr);
return -1;
}
@@ -225,7 +215,6 @@ int run_main_application(int argc, char** argv)
app->initShaders();
app->cmd_convert(argv[2], argv[3]);
release_bound_app();
bind_wacom_tablet(nullptr);
return 0;
case const_hash("-vrmode"):
start_in_vr = true;
@@ -237,7 +226,6 @@ int run_main_application(int argc, char** argv)
pp::platform::windows::run_main_window_runtime(startup, start_in_vr, splash);
release_bound_app();
bind_wacom_tablet(nullptr);
return 0;
}

View File

@@ -13,7 +13,6 @@ void run_main_window_runtime(const MainWindowStartupState& startup, bool start_i
void bind_app(App* app) noexcept;
[[nodiscard]] App* bound_app() noexcept;
void release_bound_app() noexcept;
void bind_wacom_tablet(WacomTablet* tablet) noexcept;
[[nodiscard]] WacomTablet* bound_wacom_tablet() noexcept;
[[nodiscard]] HWND main_window_handle() noexcept;
[[nodiscard]] const wchar_t* main_window_title() noexcept;