mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
The Windows embedding was based on the GLFW embedding, which grew organically from a singe-file implementation that used structs to manage all of the important state. It is in the process of being converted to a cleaner object-based architecture, but currently it is a hybrid of objects and structs that have redundant data, making it very prone to errors of forgetting to update pointers in multiple locations. This reduces the remaining structs to only a single pointer to the larger object that manages the responsibilities that handle is associated with, so that there is no need to wire things together in multiple places. For now they continue to exist as projections of the larger objects, but that will be eliminated over time by having an object structure that better reflects the API structure. Fixes https://github.com/flutter/flutter/issues/64250
44 lines
1.6 KiB
C++
44 lines
1.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"
|
|
|
|
// Structs backing the opaque references used in the C API.
|
|
//
|
|
// DO NOT ADD ANY NEW CODE HERE. These are legacy, and are being phased out
|
|
// in favor of objects that own and manage the relevant functionality.
|
|
|
|
namespace flutter {
|
|
struct FlutterWindowsEngine;
|
|
struct FlutterWindowsView;
|
|
} // namespace flutter
|
|
|
|
// Wrapper to distinguish the view controller ref from the view ref given out
|
|
// in the C API.
|
|
struct FlutterDesktopViewControllerState {
|
|
// The view that backs this state object.
|
|
std::unique_ptr<flutter::FlutterWindowsView> view;
|
|
};
|
|
|
|
// Wrapper to distinguish the plugin registrar ref from the engine ref given out
|
|
// in the C API.
|
|
struct FlutterDesktopPluginRegistrar {
|
|
// The engine that owns this state object.
|
|
flutter::FlutterWindowsEngine* engine = nullptr;
|
|
};
|
|
|
|
// Wrapper to distinguish the messenger ref from the engine ref given out
|
|
// in the C API.
|
|
struct FlutterDesktopMessenger {
|
|
// The engine that owns this state object.
|
|
flutter::FlutterWindowsEngine* engine = nullptr;
|
|
};
|
|
|
|
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOW_STATE_H_
|