Flutter Windows Embedder
flutter_windows.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
6 
7 #include <io.h>
8 
9 #include <algorithm>
10 #include <chrono>
11 #include <cstdlib>
12 #include <filesystem>
13 #include <memory>
14 #include <vector>
15 
19 #include "flutter/shell/platform/embedder/embedder.h"
28 
29 static_assert(FLUTTER_ENGINE_VERSION == 1, "");
30 
31 // Returns the engine corresponding to the given opaque API handle.
34  return reinterpret_cast<flutter::FlutterWindowsEngine*>(ref);
35 }
36 
37 // Returns the opaque API handle for the given engine instance.
40  return reinterpret_cast<FlutterDesktopEngineRef>(engine);
41 }
42 
45  return reinterpret_cast<flutter::FlutterWindowsViewController*>(ref);
46 }
47 
49  flutter::FlutterWindowsViewController* view_controller) {
50  return reinterpret_cast<FlutterDesktopViewControllerRef>(view_controller);
51 }
52 
53 // Returns the view corresponding to the given opaque API handle.
55  return reinterpret_cast<flutter::FlutterWindowsView*>(ref);
56 }
57 
58 // Returns the opaque API handle for the given view instance.
60  return reinterpret_cast<FlutterDesktopViewRef>(view);
61 }
62 
63 // Returns the texture registrar corresponding to the given opaque API handle.
66  return reinterpret_cast<flutter::FlutterWindowsTextureRegistrar*>(ref);
67 }
68 
69 // Returns the opaque API handle for the given texture registrar instance.
72  return reinterpret_cast<FlutterDesktopTextureRegistrarRef>(registrar);
73 }
74 
76  int width,
77  int height,
78  FlutterDesktopEngineRef engine_ref) {
79  flutter::FlutterWindowsEngine* engine_ptr = EngineFromHandle(engine_ref);
80  std::unique_ptr<flutter::WindowBindingHandler> window_wrapper =
81  std::make_unique<flutter::FlutterWindow>(
82  width, height, engine_ptr->windows_proc_table());
83 
84  auto engine = std::unique_ptr<flutter::FlutterWindowsEngine>(engine_ptr);
85  std::unique_ptr<flutter::FlutterWindowsView> view =
86  engine->CreateView(std::move(window_wrapper));
87  auto controller = std::make_unique<flutter::FlutterWindowsViewController>(
88  std::move(engine), std::move(view));
89 
90  controller->view()->CreateRenderSurface();
91  if (!controller->engine()->running()) {
92  if (!controller->engine()->Run()) {
93  return nullptr;
94  }
95  }
96 
97  // Must happen after engine is running.
98  controller->view()->SendInitialBounds();
99 
100  // The Windows embedder listens to accessibility updates using the
101  // view's HWND. The embedder's accessibility features may be stale if
102  // the app was in headless mode.
103  controller->engine()->UpdateAccessibilityFeatures();
104 
105  return HandleForViewController(controller.release());
106 }
107 
109  auto controller = ViewControllerFromHandle(ref);
110  delete controller;
111 }
112 
115  auto controller = ViewControllerFromHandle(ref);
116  return static_cast<FlutterDesktopViewId>(controller->view()->view_id());
117 }
118 
121  auto controller = ViewControllerFromHandle(ref);
122  return HandleForEngine(controller->engine());
123 }
124 
127  auto controller = ViewControllerFromHandle(ref);
128  return HandleForView(controller->view());
129 }
130 
133  auto controller = ViewControllerFromHandle(ref);
134  controller->view()->ForceRedraw();
135 }
136 
139  HWND hwnd,
140  UINT message,
141  WPARAM wparam,
142  LPARAM lparam,
143  LRESULT* result) {
144  auto controller = ViewControllerFromHandle(ref);
145  std::optional<LRESULT> delegate_result =
146  controller->engine()
147  ->window_proc_delegate_manager()
148  ->OnTopLevelWindowProc(hwnd, message, wparam, lparam);
149  if (delegate_result) {
150  *result = *delegate_result;
151  }
152  return delegate_result.has_value();
153 }
154 
156  const FlutterDesktopEngineProperties* engine_properties) {
157  flutter::FlutterProjectBundle project(*engine_properties);
158  auto engine = std::make_unique<flutter::FlutterWindowsEngine>(project);
159  return HandleForEngine(engine.release());
160 }
161 
163  flutter::FlutterWindowsEngine* engine = EngineFromHandle(engine_ref);
164  bool result = true;
165  if (engine->running()) {
166  result = engine->Stop();
167  }
168  delete engine;
169  return result;
170 }
171 
173  const char* entry_point) {
174  std::string_view entry_point_view{""};
175  if (entry_point != nullptr) {
176  entry_point_view = entry_point;
177  }
178 
179  return EngineFromHandle(engine)->Run(entry_point_view);
180 }
181 
183  return std::chrono::nanoseconds::max().count();
184 }
185 
188 }
189 
192  const char* plugin_name) {
193  // Currently, one registrar acts as the registrar for all plugins, so the
194  // name is ignored. It is part of the API to reduce churn in the future when
195  // aligning more closely with the Flutter registrar system.
196 
197  return EngineFromHandle(engine)->GetRegistrar();
198 }
199 
201  FlutterDesktopEngineRef engine) {
202  return EngineFromHandle(engine)->messenger();
203 }
204 
206  FlutterDesktopEngineRef engine) {
208  EngineFromHandle(engine)->texture_registrar());
209 }
210 
213  void* user_data) {
215  [callback, user_data]() { callback(user_data); });
216 }
217 
219  return ViewFromHandle(view)->GetWindowHandle();
220 }
221 
223  auto egl_manager = ViewFromHandle(view)->GetEngine()->egl_manager();
224  if (egl_manager) {
225  Microsoft::WRL::ComPtr<ID3D11Device> d3d_device;
226  Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device;
227  if (egl_manager->GetDevice(d3d_device.GetAddressOf()) &&
228  SUCCEEDED(d3d_device.As(&dxgi_device))) {
229  IDXGIAdapter* adapter;
230  if (SUCCEEDED(dxgi_device->GetAdapter(&adapter))) {
231  return adapter;
232  }
233  }
234  }
235  return nullptr;
236 }
237 
240  HWND hwnd,
241  UINT message,
242  WPARAM wparam,
243  LPARAM lparam,
244  LRESULT* result) {
245  std::optional<LRESULT> lresult =
247  wparam, lparam);
248  if (result && lresult.has_value()) {
249  *result = lresult.value();
250  }
251  return lresult.has_value();
252 }
253 
256  const char* view_type_name,
257  FlutterPlatformViewTypeEntry view_type) {
258  // TODO(schectman): forward to platform view manager.
259  // https://github.com/flutter/flutter/issues/143375
260 }
261 
264  // TODO(loicsharma): Add |FlutterDesktopPluginRegistrarGetViewById| and
265  // deprecate this API as it makes single view assumptions.
266  // https://github.com/flutter/flutter/issues/143767
267  return HandleForView(registrar->engine->view(flutter::kImplicitViewId));
268 }
269 
273  void* user_data) {
276 }
277 
283 }
284 
286  return flutter::GetDpiForHWND(hwnd);
287 }
288 
289 UINT FlutterDesktopGetDpiForMonitor(HMONITOR monitor) {
290  return flutter::GetDpiForMonitor(monitor);
291 }
292 
294  FILE* unused;
295  if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
296  _dup2(_fileno(stdout), 1);
297  }
298  if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
299  _dup2(_fileno(stdout), 2);
300  }
301  std::ios::sync_with_stdio();
302 }
303 
304 // Implementations of common/ API methods.
305 
308  return registrar->engine->messenger();
309 }
310 
314  registrar->engine->AddPluginRegistrarDestructionCallback(callback, registrar);
315 }
316 
318  const char* channel,
319  const uint8_t* message,
320  const size_t message_size,
321  const FlutterDesktopBinaryReply reply,
322  void* user_data) {
323  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
324  << "Messenger must reference a running engine to send a message";
325 
327  ->GetEngine()
328  ->SendPlatformMessage(channel, message, message_size, reply, user_data);
329 }
330 
332  const char* channel,
333  const uint8_t* message,
334  const size_t message_size) {
335  return FlutterDesktopMessengerSendWithReply(messenger, channel, message,
336  message_size, nullptr, nullptr);
337 }
338 
340  FlutterDesktopMessengerRef messenger,
342  const uint8_t* data,
343  size_t data_length) {
344  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
345  << "Messenger must reference a running engine to send a response";
346 
348  ->GetEngine()
349  ->SendPlatformMessageResponse(handle, data, data_length);
350 }
351 
353  const char* channel,
355  void* user_data) {
356  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
357  << "Messenger must reference a running engine to set a callback";
358 
360  ->GetEngine()
363 }
364 
366  FlutterDesktopMessengerRef messenger) {
368  ->AddRef()
369  ->ToRef();
370 }
371 
374 }
375 
378  nullptr;
379 }
380 
382  FlutterDesktopMessengerRef messenger) {
384  return messenger;
385 }
386 
389 }
390 
393  return HandleForTextureRegistrar(registrar->engine->texture_registrar());
394 }
395 
397  FlutterDesktopTextureRegistrarRef texture_registrar,
398  const FlutterDesktopTextureInfo* texture_info) {
399  return TextureRegistrarFromHandle(texture_registrar)
400  ->RegisterTexture(texture_info);
401 }
402 
404  FlutterDesktopTextureRegistrarRef texture_registrar,
405  int64_t texture_id,
406  void (*callback)(void* user_data),
407  void* user_data) {
408  auto registrar = TextureRegistrarFromHandle(texture_registrar);
409  if (callback) {
410  registrar->UnregisterTexture(
412  return;
413  }
414  registrar->UnregisterTexture(texture_id);
415 }
416 
418  FlutterDesktopTextureRegistrarRef texture_registrar,
419  int64_t texture_id) {
420  return TextureRegistrarFromHandle(texture_registrar)
422 }
flutter::kImplicitViewId
constexpr FlutterViewId kImplicitViewId
Definition: flutter_windows_engine.h:54
FlutterDesktopViewControllerHandleTopLevelWindowProc
bool FlutterDesktopViewControllerHandleTopLevelWindowProc(FlutterDesktopViewControllerRef ref, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
Definition: flutter_windows.cc:137
flutter::FlutterWindowsEngine::GetRegistrar
FlutterDesktopPluginRegistrarRef GetRegistrar()
Definition: flutter_windows_engine.cc:543
TextureRegistrarFromHandle
static flutter::FlutterWindowsTextureRegistrar * TextureRegistrarFromHandle(FlutterDesktopTextureRegistrarRef ref)
Definition: flutter_windows.cc:64
flutter::FlutterProjectBundle
Definition: flutter_project_bundle.h:21
FlutterDesktopViewGetHWND
HWND FlutterDesktopViewGetHWND(FlutterDesktopViewRef view)
Definition: flutter_windows.cc:218
FlutterDesktopViewControllerGetView
FlutterDesktopViewRef FlutterDesktopViewControllerGetView(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:125
FlutterDesktopEngineGetTextureRegistrar
FlutterDesktopTextureRegistrarRef FlutterDesktopEngineGetTextureRegistrar(FlutterDesktopEngineRef engine)
Definition: flutter_windows.cc:205
FlutterDesktopPluginRegistrarGetView
FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView(FlutterDesktopPluginRegistrarRef registrar)
Definition: flutter_windows.cc:262
flutter::FlutterWindowsEngine::view
FlutterWindowsView * view(FlutterViewId view_id) const
Definition: flutter_windows_engine.cc:533
FlutterDesktopEngineGetMessenger
FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger(FlutterDesktopEngineRef engine)
Definition: flutter_windows.cc:200
FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate
void FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate(FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopWindowProcCallback delegate, void *user_data)
Definition: flutter_windows.cc:270
flutter::FlutterWindowsView
Definition: flutter_windows_view.h:34
HandleForView
static FlutterDesktopViewRef HandleForView(flutter::FlutterWindowsView *view)
Definition: flutter_windows.cc:59
FlutterDesktopEngineProperties
Definition: flutter_windows.h:39
plugin_registrar.h
FlutterDesktopMessengerUnlock
void FlutterDesktopMessengerUnlock(FlutterDesktopMessengerRef messenger)
Definition: flutter_windows.cc:387
FlutterDesktopMessengerSend
bool FlutterDesktopMessengerSend(FlutterDesktopMessengerRef messenger, const char *channel, const uint8_t *message, const size_t message_size)
Definition: flutter_windows.cc:331
FlutterDesktopBinaryReply
void(* FlutterDesktopBinaryReply)(const uint8_t *data, size_t data_size, void *user_data)
Definition: flutter_messenger.h:26
FlutterDesktopViewId
int64_t FlutterDesktopViewId
Definition: flutter_windows.h:36
HandleForTextureRegistrar
static FlutterDesktopTextureRegistrarRef HandleForTextureRegistrar(flutter::FlutterWindowsTextureRegistrar *registrar)
Definition: flutter_windows.cc:70
flutter::FlutterWindowsEngine::SetNextFrameCallback
void SetNextFrameCallback(fml::closure callback)
Definition: flutter_windows_engine.cc:637
flutter::GetDpiForMonitor
UINT GetDpiForMonitor(HMONITOR monitor)
Definition: dpi_utils.cc:134
user_data
void * user_data
Definition: flutter_windows_view_unittests.cc:52
flutter::FlutterWindowsTextureRegistrar::MarkTextureFrameAvailable
bool MarkTextureFrameAvailable(int64_t texture_id)
Definition: flutter_windows_texture_registrar.cc:103
flutter::FlutterWindowsEngine
Definition: flutter_windows_engine.h:89
flutter::FlutterWindowsEngine::window_proc_delegate_manager
WindowProcDelegateManager * window_proc_delegate_manager()
Definition: flutter_windows_engine.h:161
flutter::FlutterWindowsEngine::running
virtual bool running() const
Definition: flutter_windows_engine.h:116
FlutterDesktopEngineRegisterPlatformViewType
void FlutterDesktopEngineRegisterPlatformViewType(FlutterDesktopEngineRef engine, const char *view_type_name, FlutterPlatformViewTypeEntry view_type)
Definition: flutter_windows.cc:254
FlutterDesktopMessageResponseHandle
struct _FlutterPlatformMessageResponseHandle FlutterDesktopMessageResponseHandle
Definition: flutter_messenger.h:22
FlutterDesktopEngineProcessExternalWindowMessage
bool FlutterDesktopEngineProcessExternalWindowMessage(FlutterDesktopEngineRef engine, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
Definition: flutter_windows.cc:238
FlutterDesktopPluginRegistrarSetDestructionHandler
void FlutterDesktopPluginRegistrarSetDestructionHandler(FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopOnPluginRegistrarDestroyed callback)
Definition: flutter_windows.cc:311
FlutterDesktopEngineGetPluginRegistrar
FlutterDesktopPluginRegistrarRef FlutterDesktopEngineGetPluginRegistrar(FlutterDesktopEngineRef engine, const char *plugin_name)
Definition: flutter_windows.cc:190
flutter::GetDpiForHWND
UINT GetDpiForHWND(HWND hwnd)
Definition: dpi_utils.cc:130
flutter::FlutterWindowsEngine::windows_proc_table
std::shared_ptr< WindowsProcTable > windows_proc_table()
Definition: flutter_windows_engine.h:291
EngineFromHandle
static flutter::FlutterWindowsEngine * EngineFromHandle(FlutterDesktopEngineRef ref)
Definition: flutter_windows.cc:32
FlutterDesktopPluginRegistrarGetMessenger
FlutterDesktopMessengerRef FlutterDesktopPluginRegistrarGetMessenger(FlutterDesktopPluginRegistrarRef registrar)
Definition: flutter_windows.cc:306
flutter::FlutterDesktopMessenger::ToRef
FlutterDesktopMessengerRef ToRef()
Convert to FlutterDesktopMessengerRef.
Definition: flutter_desktop_messenger.h:28
flutter::FlutterWindowsView::GetWindowHandle
virtual HWND GetWindowHandle() const
Definition: flutter_windows_view.cc:729
flutter::FlutterWindowsEngine::SendPlatformMessage
bool SendPlatformMessage(const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)
Definition: flutter_windows_engine.cc:574
FlutterDesktopResyncOutputStreams
void FlutterDesktopResyncOutputStreams()
Definition: flutter_windows.cc:293
FlutterDesktopViewControllerGetViewId
FlutterDesktopViewId FlutterDesktopViewControllerGetViewId(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:113
flutter::FlutterWindowsEngine::Stop
virtual bool Stop()
Definition: flutter_windows_engine.cc:479
flutter::FlutterWindowsEngine::messenger
FlutterDesktopMessengerRef messenger()
Definition: flutter_windows_engine.h:143
HandleForViewController
static FlutterDesktopViewControllerRef HandleForViewController(flutter::FlutterWindowsViewController *view_controller)
Definition: flutter_windows.cc:48
flutter::FlutterWindowsEngine::ProcessExternalWindowMessage
std::optional< LRESULT > ProcessExternalWindowMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Definition: flutter_windows_engine.cc:843
FlutterPlatformViewTypeEntry
Definition: flutter_windows_internal.h:32
path_utils.h
FlutterDesktopMessengerLock
FlutterDesktopMessengerRef FlutterDesktopMessengerLock(FlutterDesktopMessengerRef messenger)
Definition: flutter_windows.cc:381
flutter_windows_view.h
flutter::FlutterDesktopMessenger::GetMutex
std::mutex & GetMutex()
Definition: flutter_desktop_messenger.h:70
flutter::FlutterDesktopMessenger::Release
void Release()
Definition: flutter_desktop_messenger.h:59
FlutterDesktopViewRef
struct FlutterDesktopView * FlutterDesktopViewRef
Definition: flutter_windows.h:29
FlutterDesktopEngineRef
struct FlutterDesktopEngine * FlutterDesktopEngineRef
Definition: flutter_windows.h:33
flutter::FlutterWindowsTextureRegistrar
Definition: flutter_windows_texture_registrar.h:24
flutter_window.h
flutter::FlutterWindowsEngine::texture_registrar
FlutterWindowsTextureRegistrar * texture_registrar()
Definition: flutter_windows_engine.h:153
flutter::FlutterWindowsViewController
Controls a view that displays Flutter content.
Definition: flutter_windows_view_controller.h:16
FlutterDesktopRegistrarGetTextureRegistrar
FlutterDesktopTextureRegistrarRef FlutterDesktopRegistrarGetTextureRegistrar(FlutterDesktopPluginRegistrarRef registrar)
Definition: flutter_windows.cc:391
flutter::FlutterWindowsEngine::AddPluginRegistrarDestructionCallback
void AddPluginRegistrarDestructionCallback(FlutterDesktopOnPluginRegistrarDestroyed callback, FlutterDesktopPluginRegistrarRef registrar)
Definition: flutter_windows_engine.cc:547
FlutterDesktopTextureRegistrarRef
struct FlutterDesktopTextureRegistrar * FlutterDesktopTextureRegistrarRef
Definition: flutter_texture_registrar.h:19
FlutterDesktopGetDpiForMonitor
UINT FlutterDesktopGetDpiForMonitor(HMONITOR monitor)
Definition: flutter_windows.cc:289
window_binding_handler.h
flutter_project_bundle.h
dpi_utils.h
FlutterDesktopTextureInfo
Definition: flutter_texture_registrar.h:151
FlutterDesktopEngineProcessMessages
uint64_t FlutterDesktopEngineProcessMessages(FlutterDesktopEngineRef engine)
Definition: flutter_windows.cc:182
window_state.h
FlutterDesktopViewControllerRef
struct FlutterDesktopViewController * FlutterDesktopViewControllerRef
Definition: flutter_windows.h:25
FlutterDesktopPluginRegistrar::engine
flutter::FlutterWindowsEngine * engine
Definition: window_state.h:25
FlutterDesktopTextureRegistrarUnregisterExternalTexture
void FlutterDesktopTextureRegistrarUnregisterExternalTexture(FlutterDesktopTextureRegistrarRef texture_registrar, int64_t texture_id, void(*callback)(void *user_data), void *user_data)
Definition: flutter_windows.cc:403
flutter::FlutterWindowsEngine::SendPlatformMessageResponse
void SendPlatformMessageResponse(const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
Definition: flutter_windows_engine.cc:608
flutter_windows_view_controller.h
flutter::FlutterDesktopMessenger::GetEngine
flutter::FlutterWindowsEngine * GetEngine() const
Getter for the engine field.
Definition: flutter_desktop_messenger.h:38
flutter::IncomingMessageDispatcher::SetMessageCallback
void SetMessageCallback(const std::string &channel, FlutterDesktopMessageCallback callback, void *user_data)
Definition: incoming_message_dispatcher.cc:43
FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate
void FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate(FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopWindowProcCallback delegate)
Definition: flutter_windows.cc:278
FlutterDesktopOnPluginRegistrarDestroyed
void(* FlutterDesktopOnPluginRegistrarDestroyed)(FlutterDesktopPluginRegistrarRef)
Definition: flutter_plugin_registrar.h:23
FlutterDesktopViewControllerForceRedraw
void FlutterDesktopViewControllerForceRedraw(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:131
flutter::WindowProcDelegateManager::UnregisterTopLevelWindowProcDelegate
void UnregisterTopLevelWindowProcDelegate(FlutterDesktopWindowProcCallback callback)
Definition: window_proc_delegate_manager.cc:27
flutter::FlutterWindowsEngine::message_dispatcher
IncomingMessageDispatcher * message_dispatcher()
Definition: flutter_windows_engine.h:145
flutter::FlutterDesktopMessenger::AddRef
FlutterDesktopMessenger * AddRef()
Definition: flutter_desktop_messenger.h:50
flutter::FlutterWindowsView::GetEngine
FlutterWindowsEngine * GetEngine() const
Definition: flutter_windows_view.cc:733
FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable
bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable(FlutterDesktopTextureRegistrarRef texture_registrar, int64_t texture_id)
Definition: flutter_windows.cc:417
FlutterDesktopEngineDestroy
bool FlutterDesktopEngineDestroy(FlutterDesktopEngineRef engine_ref)
Definition: flutter_windows.cc:162
flutter_windows_engine.h
FlutterDesktopEngineCreate
FlutterDesktopEngineRef FlutterDesktopEngineCreate(const FlutterDesktopEngineProperties *engine_properties)
Definition: flutter_windows.cc:155
FlutterDesktopMessengerRef
struct FlutterDesktopMessenger * FlutterDesktopMessengerRef
Definition: flutter_messenger.h:19
FlutterDesktopMessengerSendResponse
void FlutterDesktopMessengerSendResponse(FlutterDesktopMessengerRef messenger, const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
Definition: flutter_windows.cc:339
FlutterDesktopMessengerIsAvailable
bool FlutterDesktopMessengerIsAvailable(FlutterDesktopMessengerRef messenger)
Definition: flutter_windows.cc:376
FlutterDesktopViewControllerGetEngine
FlutterDesktopEngineRef FlutterDesktopViewControllerGetEngine(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:119
HandleForEngine
static FlutterDesktopEngineRef HandleForEngine(flutter::FlutterWindowsEngine *engine)
Definition: flutter_windows.cc:38
ViewFromHandle
static flutter::FlutterWindowsView * ViewFromHandle(FlutterDesktopViewRef ref)
Definition: flutter_windows.cc:54
ViewControllerFromHandle
static flutter::FlutterWindowsViewController * ViewControllerFromHandle(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:43
VoidCallback
void(* VoidCallback)(void *)
Definition: flutter_windows.h:21
flutter_windows.h
message
Win32Message message
Definition: keyboard_unittests.cc:137
FlutterDesktopViewControllerDestroy
void FlutterDesktopViewControllerDestroy(FlutterDesktopViewControllerRef ref)
Definition: flutter_windows.cc:108
flutter::FlutterDesktopMessenger::FromRef
static FlutterDesktopMessenger * FromRef(FlutterDesktopMessengerRef ref)
Convert from FlutterDesktopMessengerRef.
Definition: flutter_desktop_messenger.h:33
FlutterDesktopEngineSetNextFrameCallback
void FlutterDesktopEngineSetNextFrameCallback(FlutterDesktopEngineRef engine, VoidCallback callback, void *user_data)
Definition: flutter_windows.cc:211
incoming_message_dispatcher.h
FlutterDesktopMessengerRelease
void FlutterDesktopMessengerRelease(FlutterDesktopMessengerRef messenger)
Definition: flutter_windows.cc:372
FlutterDesktopTextureRegistrarRegisterExternalTexture
int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture(FlutterDesktopTextureRegistrarRef texture_registrar, const FlutterDesktopTextureInfo *texture_info)
Definition: flutter_windows.cc:396
FlutterDesktopMessengerSetCallback
void FlutterDesktopMessengerSetCallback(FlutterDesktopMessengerRef messenger, const char *channel, FlutterDesktopMessageCallback callback, void *user_data)
Definition: flutter_windows.cc:352
FlutterDesktopViewGetGraphicsAdapter
IDXGIAdapter * FlutterDesktopViewGetGraphicsAdapter(FlutterDesktopViewRef view)
Definition: flutter_windows.cc:222
flutter::FlutterWindowsEngine::egl_manager
egl::Manager * egl_manager() const
Definition: flutter_windows_engine.h:159
FlutterDesktopMessageCallback
void(* FlutterDesktopMessageCallback)(FlutterDesktopMessengerRef, const FlutterDesktopMessage *, void *)
Definition: flutter_messenger.h:49
FlutterDesktopGetDpiForHWND
UINT FlutterDesktopGetDpiForHWND(HWND hwnd)
Definition: flutter_windows.cc:285
FlutterDesktopPluginRegistrar
Definition: window_state.h:23
FlutterDesktopEngineRun
bool FlutterDesktopEngineRun(FlutterDesktopEngineRef engine, const char *entry_point)
Definition: flutter_windows.cc:172
flutter::FlutterWindowsEngine::Run
bool Run()
Definition: flutter_windows_engine.cc:237
texture_id
uint32_t texture_id
Definition: compositor_opengl.cc:20
FlutterDesktopWindowProcCallback
bool(* FlutterDesktopWindowProcCallback)(HWND, UINT, WPARAM, LPARAM, void *, LRESULT *result)
Definition: flutter_windows.h:245
flutter::WindowProcDelegateManager::RegisterTopLevelWindowProcDelegate
void RegisterTopLevelWindowProcDelegate(FlutterDesktopWindowProcCallback callback, void *user_data)
Definition: window_proc_delegate_manager.cc:16
flutter::FlutterWindowsTextureRegistrar::RegisterTexture
int64_t RegisterTexture(const FlutterDesktopTextureInfo *texture_info)
Definition: flutter_windows_texture_registrar.cc:26
FlutterDesktopMessengerSendWithReply
bool FlutterDesktopMessengerSendWithReply(FlutterDesktopMessengerRef messenger, const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)
Definition: flutter_windows.cc:317
FlutterDesktopViewControllerCreate
FlutterDesktopViewControllerRef FlutterDesktopViewControllerCreate(int width, int height, FlutterDesktopEngineRef engine_ref)
Definition: flutter_windows.cc:75
flutter::FlutterWindowsEngine::ReloadSystemFonts
void ReloadSystemFonts()
Definition: flutter_windows_engine.cc:629
FlutterDesktopEngineReloadSystemFonts
void FlutterDesktopEngineReloadSystemFonts(FlutterDesktopEngineRef engine)
Definition: flutter_windows.cc:186
callback
FlutterDesktopBinaryReply callback
Definition: flutter_windows_view_unittests.cc:51
FlutterDesktopMessengerAddRef
FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef(FlutterDesktopMessengerRef messenger)
Definition: flutter_windows.cc:365