Bind Win32 main-thread queue to runtime state
This commit is contained in:
@@ -70,6 +70,11 @@ What is already real:
|
||||
- `pp_app_core`
|
||||
|
||||
Latest slice:
|
||||
- `src/platform_windows/windows_platform_services.cpp` no longer brokers the
|
||||
Win32 main-thread queue through `bound_app()->runtime()`; it now uses an
|
||||
explicit Windows runtime binding.
|
||||
- `src/platform_windows/windows_runtime_state.*` now carries the active
|
||||
`AppRuntime*` binding beside the retained Windows-owned runtime objects.
|
||||
- `src/platform_windows/windows_runtime_state.*` now owns the retained Win32
|
||||
runtime object lifetime (`App`, `WacomTablet`) instead of leaving that
|
||||
storage inside `windows_runtime_shell.cpp`.
|
||||
|
||||
@@ -78,6 +78,10 @@ Completed, blocked, and superseded task history moved to
|
||||
the queue is now ordered by code movement instead.
|
||||
|
||||
Current slice:
|
||||
- `src/platform_windows/windows_platform_services.cpp` no longer uses
|
||||
`bound_app()->runtime()` for main-thread task brokering.
|
||||
- `src/platform_windows/windows_runtime_state.*` now carries the active
|
||||
`AppRuntime*` binding used by that queue hook.
|
||||
- `src/platform_windows/windows_runtime_state.*` now owns the retained Win32
|
||||
runtime object lifetime (`App`, `WacomTablet`).
|
||||
- `src/platform_windows/windows_runtime_shell.cpp` no longer carries that
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "platform_windows/windows_main_window_session.h"
|
||||
#include "platform_windows/windows_platform_services.h"
|
||||
#include "platform_windows/windows_runtime_shell.h"
|
||||
#include "platform_windows/windows_runtime_state.h"
|
||||
#include "keymap.h"
|
||||
#include "platform_windows/windows_stylus_input.h"
|
||||
#include "platform_windows/windows_window_shell.h"
|
||||
@@ -142,9 +143,9 @@ namespace {
|
||||
|
||||
void enqueue_main_thread_task(std::packaged_task<void()> task)
|
||||
{
|
||||
if (auto* app = bound_app())
|
||||
if (auto* runtime = retained_bound_runtime())
|
||||
{
|
||||
app->runtime().main_thread_task(std::move(task));
|
||||
runtime->main_thread_task(std::move(task));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -156,9 +157,9 @@ void enqueue_main_thread_task(std::packaged_task<void()> task)
|
||||
|
||||
void drain_main_thread_tasks()
|
||||
{
|
||||
if (auto* app = bound_app())
|
||||
if (auto* runtime = retained_bound_runtime())
|
||||
{
|
||||
app->runtime().drain_main_thread_tasks();
|
||||
runtime->drain_main_thread_tasks();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,6 +120,7 @@ App* bound_app() noexcept
|
||||
void release_bound_app() noexcept
|
||||
{
|
||||
bind_app(nullptr);
|
||||
bind_runtime(nullptr);
|
||||
retained_owned_app().reset();
|
||||
}
|
||||
|
||||
@@ -136,6 +137,7 @@ int run_main_application(int argc, char** argv)
|
||||
owned_app = std::make_unique<App>();
|
||||
auto* app = owned_app.get();
|
||||
bind_app(app);
|
||||
bind_runtime(&app->runtime());
|
||||
app->set_platform_services(&pp::platform::windows::platform_services());
|
||||
app->initLog();
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "platform_windows/windows_runtime_state.h"
|
||||
|
||||
#include "app.h"
|
||||
#include "app_runtime.h"
|
||||
#include "wacom.h"
|
||||
|
||||
namespace pp::platform::windows {
|
||||
@@ -10,6 +11,7 @@ namespace {
|
||||
|
||||
struct RetainedWindowsRuntimeState final {
|
||||
std::unique_ptr<App> owned_app;
|
||||
AppRuntime* runtime = nullptr;
|
||||
WacomTablet tablet;
|
||||
};
|
||||
|
||||
@@ -31,4 +33,14 @@ WacomTablet& retained_wacom_tablet() noexcept
|
||||
return retained_runtime_state().tablet;
|
||||
}
|
||||
|
||||
AppRuntime* retained_bound_runtime() noexcept
|
||||
{
|
||||
return retained_runtime_state().runtime;
|
||||
}
|
||||
|
||||
void bind_runtime(AppRuntime* runtime) noexcept
|
||||
{
|
||||
retained_runtime_state().runtime = runtime;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,11 +3,14 @@
|
||||
#include <memory>
|
||||
|
||||
class App;
|
||||
class AppRuntime;
|
||||
class WacomTablet;
|
||||
|
||||
namespace pp::platform::windows {
|
||||
|
||||
[[nodiscard]] std::unique_ptr<App>& retained_owned_app() noexcept;
|
||||
[[nodiscard]] WacomTablet& retained_wacom_tablet() noexcept;
|
||||
[[nodiscard]] AppRuntime* retained_bound_runtime() noexcept;
|
||||
void bind_runtime(AppRuntime* runtime) noexcept;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user