mirror of
https://github.com/encounter/engine.git
synced 2026-03-30 11:09:55 -07:00
508146f0de
Adds a task runner, and exposes API to allow application-level runloops to know when they need to next call the API to process engine events. Internally, sends null events to wake up the app runloop when new events are scheduled to ensure the wait time is updated accordingly. Fixes #36420
68 lines
2.6 KiB
C++
68 lines
2.6 KiB
C++
// Copyright 2013 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|
|
#define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|
|
|
|
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/plugin_registrar.h"
|
|
#include "flutter/shell/platform/common/cpp/incoming_message_dispatcher.h"
|
|
#include "flutter/shell/platform/embedder/embedder.h"
|
|
#include "flutter/shell/platform/windows/key_event_handler.h"
|
|
#include "flutter/shell/platform/windows/keyboard_hook_handler.h"
|
|
#include "flutter/shell/platform/windows/platform_handler.h"
|
|
#include "flutter/shell/platform/windows/text_input_plugin.h"
|
|
#include "flutter/shell/platform/windows/win32_task_runner.h"
|
|
|
|
struct flutter::Win32FlutterWindow;
|
|
|
|
// Struct for storing state within an instance of the windows native (HWND or
|
|
// CoreWindow) Window.
|
|
struct FlutterDesktopViewControllerState {
|
|
// The win32 window that owns this state object.
|
|
std::unique_ptr<flutter::Win32FlutterWindow> view;
|
|
|
|
// The state associate with the engine backing the view.
|
|
std::unique_ptr<FlutterDesktopEngineState> engine_state;
|
|
|
|
// The window handle given to API clients.
|
|
std::unique_ptr<FlutterDesktopView> view_wrapper;
|
|
};
|
|
|
|
// Opaque reference for the native windows itself. This is separate from the
|
|
// controller so that it can be provided to plugins without giving them access
|
|
// to all of the controller-based functionality.
|
|
struct FlutterDesktopView {
|
|
// The window that (indirectly) owns this state object.
|
|
flutter::Win32FlutterWindow* window;
|
|
};
|
|
|
|
// Struct for storing state of a Flutter engine instance.
|
|
struct FlutterDesktopEngineState {
|
|
// The handle to the Flutter engine instance.
|
|
FLUTTER_API_SYMBOL(FlutterEngine) engine;
|
|
|
|
// Task runner for tasks posted from the engine.
|
|
std::unique_ptr<flutter::Win32TaskRunner> task_runner;
|
|
};
|
|
|
|
// State associated with the plugin registrar.
|
|
struct FlutterDesktopPluginRegistrar {
|
|
// The plugin messenger handle given to API clients.
|
|
std::unique_ptr<FlutterDesktopMessenger> messenger;
|
|
|
|
// The handle for the window associated with this registrar.
|
|
FlutterDesktopView* window;
|
|
};
|
|
|
|
// State associated with the messenger used to communicate with the engine.
|
|
struct FlutterDesktopMessenger {
|
|
// The Flutter engine this messenger sends outgoing messages to.
|
|
FLUTTER_API_SYMBOL(FlutterEngine) engine;
|
|
|
|
// The message dispatcher for handling incoming messages.
|
|
flutter::IncomingMessageDispatcher* dispatcher;
|
|
};
|
|
|
|
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|