Flutter Windows Embedder
flutter_windows.cc File Reference

Go to the source code of this file.

Functions

static flutter::FlutterWindowsEngineEngineFromHandle (FlutterDesktopEngineRef ref)
 
static FlutterDesktopEngineRef HandleForEngine (flutter::FlutterWindowsEngine *engine)
 
static flutter::FlutterWindowsViewControllerViewControllerFromHandle (FlutterDesktopViewControllerRef ref)
 
static FlutterDesktopViewControllerRef HandleForViewController (flutter::FlutterWindowsViewController *view_controller)
 
static flutter::FlutterWindowsViewViewFromHandle (FlutterDesktopViewRef ref)
 
static FlutterDesktopViewRef HandleForView (flutter::FlutterWindowsView *view)
 
static flutter::FlutterWindowsTextureRegistrarTextureRegistrarFromHandle (FlutterDesktopTextureRegistrarRef ref)
 
static FlutterDesktopTextureRegistrarRef HandleForTextureRegistrar (flutter::FlutterWindowsTextureRegistrar *registrar)
 
static FlutterDesktopViewControllerRef CreateViewController (FlutterDesktopEngineRef engine_ref, int width, int height, bool owns_engine)
 
FlutterDesktopViewControllerRef FlutterDesktopViewControllerCreate (int width, int height, FlutterDesktopEngineRef engine)
 
FlutterDesktopViewControllerRef FlutterDesktopEngineCreateViewController (FlutterDesktopEngineRef engine, const FlutterDesktopViewControllerProperties *properties)
 
void FlutterDesktopViewControllerDestroy (FlutterDesktopViewControllerRef ref)
 
FlutterDesktopViewId FlutterDesktopViewControllerGetViewId (FlutterDesktopViewControllerRef ref)
 
FlutterDesktopEngineRef FlutterDesktopViewControllerGetEngine (FlutterDesktopViewControllerRef ref)
 
FlutterDesktopViewRef FlutterDesktopViewControllerGetView (FlutterDesktopViewControllerRef ref)
 
void FlutterDesktopViewControllerForceRedraw (FlutterDesktopViewControllerRef ref)
 
bool FlutterDesktopViewControllerHandleTopLevelWindowProc (FlutterDesktopViewControllerRef ref, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
 
FlutterDesktopEngineRef FlutterDesktopEngineCreate (const FlutterDesktopEngineProperties *engine_properties)
 
bool FlutterDesktopEngineDestroy (FlutterDesktopEngineRef engine_ref)
 
FLUTTER_EXPORT FlutterDesktopEngineRef FlutterDesktopEngineForId (int64_t engine_id)
 
bool FlutterDesktopEngineRun (FlutterDesktopEngineRef engine, const char *entry_point)
 
uint64_t FlutterDesktopEngineProcessMessages (FlutterDesktopEngineRef engine)
 
void FlutterDesktopEngineReloadSystemFonts (FlutterDesktopEngineRef engine)
 
FlutterDesktopPluginRegistrarRef FlutterDesktopEngineGetPluginRegistrar (FlutterDesktopEngineRef engine, const char *plugin_name)
 
FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger (FlutterDesktopEngineRef engine)
 
FlutterDesktopTextureRegistrarRef FlutterDesktopEngineGetTextureRegistrar (FlutterDesktopEngineRef engine)
 
void FlutterDesktopEngineSetNextFrameCallback (FlutterDesktopEngineRef engine, VoidCallback callback, void *user_data)
 
bool FlutterDesktopEngineIsPlatformThread (FlutterDesktopEngineRef engine)
 
void FlutterDesktopEnginePostPlatformThreadTask (FlutterDesktopEngineRef engine, VoidCallback callback, VoidCallback on_cancel, void *user_data)
 
HWND FlutterDesktopViewGetHWND (FlutterDesktopViewRef view)
 
IDXGIAdapter * FlutterDesktopViewGetGraphicsAdapter (FlutterDesktopViewRef view)
 
bool FlutterDesktopEngineGetGraphicsAdapter (FlutterDesktopEngineRef engine, IDXGIAdapter **adapter_out)
 
bool FlutterDesktopEngineProcessExternalWindowMessage (FlutterDesktopEngineRef engine, HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
 
void FlutterDesktopEngineRegisterPlatformViewType (FlutterDesktopEngineRef engine, const char *view_type_name, FlutterPlatformViewTypeEntry view_type)
 
FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView (FlutterDesktopPluginRegistrarRef registrar)
 
FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetViewById (FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopViewId view_id)
 
void FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate (FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopWindowProcCallback delegate, void *user_data)
 
void FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate (FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopWindowProcCallback delegate)
 
bool FlutterDesktopPluginRegistrarGetGraphicsAdapter (FlutterDesktopPluginRegistrarRef registrar, IDXGIAdapter **adapter_out)
 
UINT FlutterDesktopGetDpiForHWND (HWND hwnd)
 
UINT FlutterDesktopGetDpiForMonitor (HMONITOR monitor)
 
void FlutterDesktopResyncOutputStreams ()
 
FlutterDesktopMessengerRef FlutterDesktopPluginRegistrarGetMessenger (FlutterDesktopPluginRegistrarRef registrar)
 
void FlutterDesktopPluginRegistrarSetDestructionHandler (FlutterDesktopPluginRegistrarRef registrar, FlutterDesktopOnPluginRegistrarDestroyed callback)
 
bool FlutterDesktopMessengerSendWithReply (FlutterDesktopMessengerRef messenger, const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)
 
bool FlutterDesktopMessengerSend (FlutterDesktopMessengerRef messenger, const char *channel, const uint8_t *message, const size_t message_size)
 
void FlutterDesktopMessengerSendResponse (FlutterDesktopMessengerRef messenger, const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
 
void FlutterDesktopMessengerSetCallback (FlutterDesktopMessengerRef messenger, const char *channel, FlutterDesktopMessageCallback callback, void *user_data)
 
FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef (FlutterDesktopMessengerRef messenger)
 
void FlutterDesktopMessengerRelease (FlutterDesktopMessengerRef messenger)
 
bool FlutterDesktopMessengerIsAvailable (FlutterDesktopMessengerRef messenger)
 
FlutterDesktopMessengerRef FlutterDesktopMessengerLock (FlutterDesktopMessengerRef messenger)
 
void FlutterDesktopMessengerUnlock (FlutterDesktopMessengerRef messenger)
 
FlutterDesktopTextureRegistrarRef FlutterDesktopRegistrarGetTextureRegistrar (FlutterDesktopPluginRegistrarRef registrar)
 
int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture (FlutterDesktopTextureRegistrarRef texture_registrar, const FlutterDesktopTextureInfo *texture_info)
 
void FlutterDesktopTextureRegistrarUnregisterExternalTexture (FlutterDesktopTextureRegistrarRef texture_registrar, int64_t texture_id, void(*callback)(void *user_data), void *user_data)
 
bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable (FlutterDesktopTextureRegistrarRef texture_registrar, int64_t texture_id)
 

Function Documentation

◆ CreateViewController()

static FlutterDesktopViewControllerRef CreateViewController ( FlutterDesktopEngineRef  engine_ref,
int  width,
int  height,
bool  owns_engine 
)
static

Definition at line 79 of file flutter_windows.cc.

83  {
84  flutter::FlutterWindowsEngine* engine_ptr = EngineFromHandle(engine_ref);
85  std::unique_ptr<flutter::WindowBindingHandler> window_wrapper =
86  std::make_unique<flutter::FlutterWindow>(
87  width, height, engine_ptr->display_manager(),
88  engine_ptr->windows_proc_table());
89 
90  std::unique_ptr<flutter::FlutterWindowsEngine> engine;
91  if (owns_engine) {
92  engine = std::unique_ptr<flutter::FlutterWindowsEngine>(engine_ptr);
93  }
94 
95  std::unique_ptr<flutter::FlutterWindowsView> view = engine_ptr->CreateView(
96  std::move(window_wrapper), false, flutter::BoxConstraints());
97  if (!view) {
98  return nullptr;
99  }
100 
101  auto controller = std::make_unique<flutter::FlutterWindowsViewController>(
102  std::move(engine), std::move(view));
103 
104  // Launch the engine if it is not running already.
105  if (!controller->engine()->running()) {
106  if (!controller->engine()->Run()) {
107  return nullptr;
108  }
109  }
110 
111  // Must happen after engine is running.
112  controller->view()->SendInitialBounds();
113 
114  // The Windows embedder listens to accessibility updates using the
115  // view's HWND. The embedder's accessibility features may be stale if
116  // the app was in headless mode.
117  controller->engine()->UpdateAccessibilityFeatures();
118 
119  return HandleForViewController(controller.release());
120 }
std::shared_ptr< WindowsProcTable > windows_proc_table()
std::shared_ptr< DisplayManagerWin32 > display_manager()
std::unique_ptr< FlutterWindowsView > CreateView(std::unique_ptr< WindowBindingHandler > window, bool is_sized_to_content, const BoxConstraints &box_constraints, FlutterWindowsViewSizingDelegate *sizing_delegate=nullptr)
static flutter::FlutterWindowsEngine * EngineFromHandle(FlutterDesktopEngineRef ref)
static FlutterDesktopViewControllerRef HandleForViewController(flutter::FlutterWindowsViewController *view_controller)

References flutter::FlutterWindowsEngine::CreateView(), flutter::FlutterWindowsEngine::display_manager(), EngineFromHandle(), HandleForViewController(), and flutter::FlutterWindowsEngine::windows_proc_table().

Referenced by FlutterDesktopEngineCreateViewController(), and FlutterDesktopViewControllerCreate().

◆ EngineFromHandle()

◆ FlutterDesktopEngineCreate()

FlutterDesktopEngineRef FlutterDesktopEngineCreate ( const FlutterDesktopEngineProperties engine_properties)

Definition at line 184 of file flutter_windows.cc.

185  {
186  flutter::FlutterProjectBundle project(*engine_properties);
187  auto engine = std::make_unique<flutter::FlutterWindowsEngine>(project);
188  return HandleForEngine(engine.release());
189 }
static FlutterDesktopEngineRef HandleForEngine(flutter::FlutterWindowsEngine *engine)

References HandleForEngine().

Referenced by flutter::FlutterEngine::FlutterEngine(), and flutter::testing::TEST().

◆ FlutterDesktopEngineCreateViewController()

FlutterDesktopViewControllerRef FlutterDesktopEngineCreateViewController ( FlutterDesktopEngineRef  engine,
const FlutterDesktopViewControllerProperties properties 
)

Definition at line 129 of file flutter_windows.cc.

131  {
132  return CreateViewController(engine, properties->width, properties->height,
133  /*owns_engine=*/false);
134 }
static FlutterDesktopViewControllerRef CreateViewController(FlutterDesktopEngineRef engine_ref, int width, int height, bool owns_engine)

References CreateViewController(), FlutterDesktopViewControllerProperties::height, and FlutterDesktopViewControllerProperties::width.

Referenced by flutter::testing::TEST_F().

◆ FlutterDesktopEngineDestroy()

bool FlutterDesktopEngineDestroy ( FlutterDesktopEngineRef  engine_ref)

Definition at line 191 of file flutter_windows.cc.

191  {
192  flutter::FlutterWindowsEngine* engine = EngineFromHandle(engine_ref);
193  bool result = true;
194  if (engine->running()) {
195  result = engine->Stop();
196  }
197  delete engine;
198  return result;
199 }

References EngineFromHandle(), flutter::FlutterWindowsEngine::running(), and flutter::FlutterWindowsEngine::Stop().

Referenced by flutter::FlutterEngine::ShutDown(), and flutter::testing::TEST().

◆ FlutterDesktopEngineForId()

FLUTTER_EXPORT FlutterDesktopEngineRef FlutterDesktopEngineForId ( int64_t  engine_id)

Definition at line 202 of file flutter_windows.cc.

202  {
203  return HandleForEngine(
205 }
static FlutterWindowsEngine * GetEngineForId(int64_t engine_id)

References flutter::FlutterWindowsEngine::GetEngineForId(), and HandleForEngine().

Referenced by flutter::testing::TEST_F().

◆ FlutterDesktopEngineGetGraphicsAdapter()

bool FlutterDesktopEngineGetGraphicsAdapter ( FlutterDesktopEngineRef  engine,
IDXGIAdapter **  adapter_out 
)

Definition at line 297 of file flutter_windows.cc.

298  {
299  auto egl_manager = EngineFromHandle(engine)->egl_manager();
300  if (egl_manager) {
301  Microsoft::WRL::ComPtr<ID3D11Device> d3d_device;
302  Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device;
303  if (egl_manager->GetDevice(d3d_device.GetAddressOf()) &&
304  SUCCEEDED(d3d_device.As(&dxgi_device))) {
305  if (SUCCEEDED(dxgi_device->GetAdapter(adapter_out))) {
306  return true;
307  }
308  }
309  }
310  return false;
311 }

References flutter::FlutterWindowsEngine::egl_manager(), and EngineFromHandle().

Referenced by FlutterDesktopPluginRegistrarGetGraphicsAdapter(), FlutterDesktopViewGetGraphicsAdapter(), flutter::FlutterEngine::GetGraphicsAdapter(), and flutter::testing::TEST_F().

◆ FlutterDesktopEngineGetMessenger()

FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger ( FlutterDesktopEngineRef  engine)

Definition at line 235 of file flutter_windows.cc.

236  {
237  return EngineFromHandle(engine)->messenger();
238 }
FlutterDesktopMessengerRef messenger()

References EngineFromHandle(), and flutter::FlutterWindowsEngine::messenger().

Referenced by flutter::FlutterEngine::FlutterEngine().

◆ FlutterDesktopEngineGetPluginRegistrar()

FlutterDesktopPluginRegistrarRef FlutterDesktopEngineGetPluginRegistrar ( FlutterDesktopEngineRef  engine,
const char *  plugin_name 
)

Definition at line 225 of file flutter_windows.cc.

227  {
228  // Currently, one registrar acts as the registrar for all plugins, so the
229  // name is ignored. It is part of the API to reduce churn in the future when
230  // aligning more closely with the Flutter registrar system.
231 
232  return EngineFromHandle(engine)->GetRegistrar();
233 }
FlutterDesktopPluginRegistrarRef GetRegistrar()

References EngineFromHandle(), and flutter::FlutterWindowsEngine::GetRegistrar().

Referenced by flutter::FlutterEngine::GetRegistrarForPlugin(), and flutter::testing::TEST_F().

◆ FlutterDesktopEngineGetTextureRegistrar()

FlutterDesktopTextureRegistrarRef FlutterDesktopEngineGetTextureRegistrar ( FlutterDesktopEngineRef  engine)

Definition at line 240 of file flutter_windows.cc.

241  {
243  EngineFromHandle(engine)->texture_registrar());
244 }
static FlutterDesktopTextureRegistrarRef HandleForTextureRegistrar(flutter::FlutterWindowsTextureRegistrar *registrar)

References EngineFromHandle(), and HandleForTextureRegistrar().

Referenced by flutter::testing::TEST().

◆ FlutterDesktopEngineIsPlatformThread()

bool FlutterDesktopEngineIsPlatformThread ( FlutterDesktopEngineRef  engine)

◆ FlutterDesktopEnginePostPlatformThreadTask()

void FlutterDesktopEnginePostPlatformThreadTask ( FlutterDesktopEngineRef  engine,
VoidCallback  callback,
VoidCallback  on_cancel,
void *  user_data 
)

Definition at line 257 of file flutter_windows.cc.

260  {
261  FML_DCHECK(callback) << "Callback must not be null";
262  struct Context {
264  VoidCallback on_cancel;
265  void* user_data;
266  bool invoked = false;
267 
268  ~Context() {
269  if (!invoked && on_cancel) {
270  on_cancel(user_data);
271  }
272  }
273  };
274 
275  auto context =
276  std::make_shared<Context>(Context{callback, on_cancel, user_data});
277  EngineFromHandle(engine)->task_runner()->PostTask([context]() {
278  context->invoked = true;
279  context->callback(context->user_data);
280  });
281 }
void PostTask(TaskClosure task)
Definition: task_runner.cc:89
void(* VoidCallback)(void *)
FlutterDesktopBinaryReply callback

References callback, EngineFromHandle(), flutter::TaskRunner::PostTask(), flutter::FlutterWindowsEngine::task_runner(), and user_data.

Referenced by flutter::FlutterEngine::PostPlatformThreadTask(), and flutter::testing::TEST_F().

◆ FlutterDesktopEngineProcessExternalWindowMessage()

bool FlutterDesktopEngineProcessExternalWindowMessage ( FlutterDesktopEngineRef  engine,
HWND  hwnd,
UINT  message,
WPARAM  wparam,
LPARAM  lparam,
LRESULT *  result 
)

Definition at line 313 of file flutter_windows.cc.

319  {
320  std::optional<LRESULT> lresult =
322  wparam, lparam);
323  if (result && lresult.has_value()) {
324  *result = lresult.value();
325  }
326  return lresult.has_value();
327 }
std::optional< LRESULT > ProcessExternalWindowMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Win32Message message

References EngineFromHandle(), message, and flutter::FlutterWindowsEngine::ProcessExternalWindowMessage().

Referenced by flutter::FlutterEngine::ProcessExternalWindowMessage().

◆ FlutterDesktopEngineProcessMessages()

uint64_t FlutterDesktopEngineProcessMessages ( FlutterDesktopEngineRef  engine)

Definition at line 217 of file flutter_windows.cc.

217  {
218  return std::chrono::nanoseconds::max().count();
219 }

Referenced by flutter::FlutterEngine::ProcessMessages().

◆ FlutterDesktopEngineRegisterPlatformViewType()

void FlutterDesktopEngineRegisterPlatformViewType ( FlutterDesktopEngineRef  engine,
const char *  view_type_name,
FlutterPlatformViewTypeEntry  view_type 
)

Definition at line 329 of file flutter_windows.cc.

332  {
333  // TODO(schectman): forward to platform view manager.
334  // https://github.com/flutter/flutter/issues/143375
335 }

◆ FlutterDesktopEngineReloadSystemFonts()

void FlutterDesktopEngineReloadSystemFonts ( FlutterDesktopEngineRef  engine)

◆ FlutterDesktopEngineRun()

bool FlutterDesktopEngineRun ( FlutterDesktopEngineRef  engine,
const char *  entry_point 
)

Definition at line 207 of file flutter_windows.cc.

208  {
209  std::string_view entry_point_view{""};
210  if (entry_point != nullptr) {
211  entry_point_view = entry_point;
212  }
213 
214  return EngineFromHandle(engine)->Run(entry_point_view);
215 }

References EngineFromHandle(), and flutter::FlutterWindowsEngine::Run().

Referenced by flutter::FlutterEngine::Run(), and flutter::testing::TEST_F().

◆ FlutterDesktopEngineSetNextFrameCallback()

void FlutterDesktopEngineSetNextFrameCallback ( FlutterDesktopEngineRef  engine,
VoidCallback  callback,
void *  user_data 
)

◆ FlutterDesktopGetDpiForHWND()

UINT FlutterDesktopGetDpiForHWND ( HWND  hwnd)

Definition at line 370 of file flutter_windows.cc.

370  {
371  return flutter::GetDpiForHWND(hwnd);
372 }
UINT GetDpiForHWND(HWND hwnd)
Definition: dpi_utils.cc:128

References flutter::GetDpiForHWND().

Referenced by flutter::HostWindow::GetWindowContentSize().

◆ FlutterDesktopGetDpiForMonitor()

UINT FlutterDesktopGetDpiForMonitor ( HMONITOR  monitor)

Definition at line 374 of file flutter_windows.cc.

374  {
375  return flutter::GetDpiForMonitor(monitor);
376 }
UINT GetDpiForMonitor(HMONITOR monitor)
Definition: dpi_utils.cc:132

References flutter::GetDpiForMonitor().

◆ FlutterDesktopMessengerAddRef()

FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef ( FlutterDesktopMessengerRef  messenger)

Definition at line 450 of file flutter_windows.cc.

451  {
453  ->AddRef()
454  ->ToRef();
455 }
FlutterDesktopMessengerRef ToRef()
Convert to FlutterDesktopMessengerRef.
static FlutterDesktopMessenger * FromRef(FlutterDesktopMessengerRef ref)
Convert from FlutterDesktopMessengerRef.

References flutter::FlutterDesktopMessenger::AddRef(), flutter::FlutterDesktopMessenger::FromRef(), and flutter::FlutterDesktopMessenger::ToRef().

◆ FlutterDesktopMessengerIsAvailable()

bool FlutterDesktopMessengerIsAvailable ( FlutterDesktopMessengerRef  messenger)

◆ FlutterDesktopMessengerLock()

FlutterDesktopMessengerRef FlutterDesktopMessengerLock ( FlutterDesktopMessengerRef  messenger)

Definition at line 466 of file flutter_windows.cc.

467  {
469  return messenger;
470 }

References flutter::FlutterDesktopMessenger::FromRef(), and flutter::FlutterDesktopMessenger::GetMutex().

◆ FlutterDesktopMessengerRelease()

◆ FlutterDesktopMessengerSend()

bool FlutterDesktopMessengerSend ( FlutterDesktopMessengerRef  messenger,
const char *  channel,
const uint8_t *  message,
const size_t  message_size 
)

Definition at line 416 of file flutter_windows.cc.

419  {
420  return FlutterDesktopMessengerSendWithReply(messenger, channel, message,
421  message_size, nullptr, nullptr);
422 }
bool FlutterDesktopMessengerSendWithReply(FlutterDesktopMessengerRef messenger, const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)

References FlutterDesktopMessengerSendWithReply(), and message.

Referenced by flutter::BinaryMessengerImpl::Send().

◆ FlutterDesktopMessengerSendResponse()

void FlutterDesktopMessengerSendResponse ( FlutterDesktopMessengerRef  messenger,
const FlutterDesktopMessageResponseHandle handle,
const uint8_t *  data,
size_t  data_length 
)

Definition at line 424 of file flutter_windows.cc.

428  {
429  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
430  << "Messenger must reference a running engine to send a response";
431 
433  ->GetEngine()
434  ->SendPlatformMessageResponse(handle, data, data_length);
435 }
void SendPlatformMessageResponse(const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
bool FlutterDesktopMessengerIsAvailable(FlutterDesktopMessengerRef messenger)

References FlutterDesktopMessengerIsAvailable(), flutter::FlutterDesktopMessenger::FromRef(), flutter::FlutterDesktopMessenger::GetEngine(), and flutter::FlutterWindowsEngine::SendPlatformMessageResponse().

Referenced by flutter::IncomingMessageDispatcher::HandleMessage().

◆ FlutterDesktopMessengerSendWithReply()

bool FlutterDesktopMessengerSendWithReply ( FlutterDesktopMessengerRef  messenger,
const char *  channel,
const uint8_t *  message,
const size_t  message_size,
const FlutterDesktopBinaryReply  reply,
void *  user_data 
)

Definition at line 402 of file flutter_windows.cc.

407  {
408  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
409  << "Messenger must reference a running engine to send a message";
410 
412  ->GetEngine()
413  ->SendPlatformMessage(channel, message, message_size, reply, user_data);
414 }
bool SendPlatformMessage(const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)

References FlutterDesktopMessengerIsAvailable(), flutter::FlutterDesktopMessenger::FromRef(), flutter::FlutterDesktopMessenger::GetEngine(), message, flutter::FlutterWindowsEngine::SendPlatformMessage(), and user_data.

Referenced by FlutterDesktopMessengerSend(), and flutter::BinaryMessengerImpl::Send().

◆ FlutterDesktopMessengerSetCallback()

void FlutterDesktopMessengerSetCallback ( FlutterDesktopMessengerRef  messenger,
const char *  channel,
FlutterDesktopMessageCallback  callback,
void *  user_data 
)

Definition at line 437 of file flutter_windows.cc.

440  {
441  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
442  << "Messenger must reference a running engine to set a callback";
443 
445  ->GetEngine()
448 }
IncomingMessageDispatcher * message_dispatcher()
void SetMessageCallback(const std::string &channel, FlutterDesktopMessageCallback callback, void *user_data)

References callback, FlutterDesktopMessengerIsAvailable(), flutter::FlutterDesktopMessenger::FromRef(), flutter::FlutterDesktopMessenger::GetEngine(), flutter::FlutterWindowsEngine::message_dispatcher(), flutter::IncomingMessageDispatcher::SetMessageCallback(), and user_data.

Referenced by flutter::BinaryMessengerImpl::SetMessageHandler().

◆ FlutterDesktopMessengerUnlock()

void FlutterDesktopMessengerUnlock ( FlutterDesktopMessengerRef  messenger)

◆ FlutterDesktopPluginRegistrarGetGraphicsAdapter()

bool FlutterDesktopPluginRegistrarGetGraphicsAdapter ( FlutterDesktopPluginRegistrarRef  registrar,
IDXGIAdapter **  adapter_out 
)

Definition at line 363 of file flutter_windows.cc.

365  {
367  HandleForEngine(registrar->engine), adapter_out);
368 }
bool FlutterDesktopEngineGetGraphicsAdapter(FlutterDesktopEngineRef engine, IDXGIAdapter **adapter_out)
flutter::FlutterWindowsEngine * engine
Definition: window_state.h:25

References FlutterDesktopPluginRegistrar::engine, FlutterDesktopEngineGetGraphicsAdapter(), and HandleForEngine().

Referenced by flutter::PluginRegistrarWindows::GetGraphicsAdapter().

◆ FlutterDesktopPluginRegistrarGetMessenger()

FlutterDesktopMessengerRef FlutterDesktopPluginRegistrarGetMessenger ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 391 of file flutter_windows.cc.

392  {
393  return registrar->engine->messenger();
394 }

References FlutterDesktopPluginRegistrar::engine, and flutter::FlutterWindowsEngine::messenger().

◆ FlutterDesktopPluginRegistrarGetView()

FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 337 of file flutter_windows.cc.

338  {
339  return HandleForView(registrar->engine->view(flutter::kImplicitViewId));
340 }
FlutterWindowsView * view(FlutterViewId view_id) const
static FlutterDesktopViewRef HandleForView(flutter::FlutterWindowsView *view)
constexpr FlutterViewId kImplicitViewId

References FlutterDesktopPluginRegistrar::engine, HandleForView(), flutter::kImplicitViewId, and flutter::FlutterWindowsEngine::view().

Referenced by flutter::PluginRegistrarWindows::PluginRegistrarWindows(), and flutter::testing::TEST_F().

◆ FlutterDesktopPluginRegistrarGetViewById()

FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetViewById ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopViewId  view_id 
)

◆ FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate()

void FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopWindowProcCallback  delegate,
void *  user_data 
)

◆ FlutterDesktopPluginRegistrarSetDestructionHandler()

void FlutterDesktopPluginRegistrarSetDestructionHandler ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopOnPluginRegistrarDestroyed  callback 
)

Definition at line 396 of file flutter_windows.cc.

398  {
399  registrar->engine->AddPluginRegistrarDestructionCallback(callback, registrar);
400 }
void AddPluginRegistrarDestructionCallback(FlutterDesktopOnPluginRegistrarDestroyed callback, FlutterDesktopPluginRegistrarRef registrar)

References flutter::FlutterWindowsEngine::AddPluginRegistrarDestructionCallback(), callback, and FlutterDesktopPluginRegistrar::engine.

Referenced by flutter::PluginRegistrarManager::GetRegistrar().

◆ FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate()

◆ FlutterDesktopRegistrarGetTextureRegistrar()

FlutterDesktopTextureRegistrarRef FlutterDesktopRegistrarGetTextureRegistrar ( FlutterDesktopPluginRegistrarRef  registrar)

◆ FlutterDesktopResyncOutputStreams()

void FlutterDesktopResyncOutputStreams ( )

Definition at line 378 of file flutter_windows.cc.

378  {
379  FILE* unused;
380  if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
381  _dup2(_fileno(stdout), 1);
382  }
383  if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
384  _dup2(_fileno(stdout), 2);
385  }
386  std::ios::sync_with_stdio();
387 }

◆ FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable()

bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable ( FlutterDesktopTextureRegistrarRef  texture_registrar,
int64_t  texture_id 
)

Definition at line 502 of file flutter_windows.cc.

504  {
505  return TextureRegistrarFromHandle(texture_registrar)
507 }
uint32_t texture_id
static flutter::FlutterWindowsTextureRegistrar * TextureRegistrarFromHandle(FlutterDesktopTextureRegistrarRef ref)

References flutter::FlutterWindowsTextureRegistrar::MarkTextureFrameAvailable(), texture_id, and TextureRegistrarFromHandle().

Referenced by flutter::TextureRegistrarImpl::MarkTextureFrameAvailable().

◆ FlutterDesktopTextureRegistrarRegisterExternalTexture()

int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture ( FlutterDesktopTextureRegistrarRef  texture_registrar,
const FlutterDesktopTextureInfo texture_info 
)

Definition at line 481 of file flutter_windows.cc.

483  {
484  return TextureRegistrarFromHandle(texture_registrar)
485  ->RegisterTexture(texture_info);
486 }
int64_t RegisterTexture(const FlutterDesktopTextureInfo *texture_info)

References flutter::FlutterWindowsTextureRegistrar::RegisterTexture(), and TextureRegistrarFromHandle().

Referenced by flutter::TextureRegistrarImpl::RegisterTexture().

◆ FlutterDesktopTextureRegistrarUnregisterExternalTexture()

void FlutterDesktopTextureRegistrarUnregisterExternalTexture ( FlutterDesktopTextureRegistrarRef  texture_registrar,
int64_t  texture_id,
void(*)(void *user_data callback,
void *  user_data 
)

Definition at line 488 of file flutter_windows.cc.

492  {
493  auto registrar = TextureRegistrarFromHandle(texture_registrar);
494  if (callback) {
495  registrar->UnregisterTexture(
497  return;
498  }
499  registrar->UnregisterTexture(texture_id);
500 }

References callback, texture_id, TextureRegistrarFromHandle(), and user_data.

Referenced by flutter::TextureRegistrarImpl::UnregisterTexture().

◆ FlutterDesktopViewControllerCreate()

FlutterDesktopViewControllerRef FlutterDesktopViewControllerCreate ( int  width,
int  height,
FlutterDesktopEngineRef  engine 
)

Definition at line 122 of file flutter_windows.cc.

125  {
126  return CreateViewController(engine, width, height, /*owns_engine=*/true);
127 }

References CreateViewController().

Referenced by flutter::FlutterViewController::FlutterViewController(), and flutter::testing::TEST_F().

◆ FlutterDesktopViewControllerDestroy()

void FlutterDesktopViewControllerDestroy ( FlutterDesktopViewControllerRef  ref)

Definition at line 136 of file flutter_windows.cc.

136  {
137  auto controller = ViewControllerFromHandle(ref);
138  controller->Destroy();
139  delete controller;
140 }
static flutter::FlutterWindowsViewController * ViewControllerFromHandle(FlutterDesktopViewControllerRef ref)

References ViewControllerFromHandle().

Referenced by flutter::FlutterViewController::~FlutterViewController().

◆ FlutterDesktopViewControllerForceRedraw()

void FlutterDesktopViewControllerForceRedraw ( FlutterDesktopViewControllerRef  ref)

Definition at line 160 of file flutter_windows.cc.

161  {
162  auto controller = ViewControllerFromHandle(ref);
163  controller->view()->ForceRedraw();
164 }

References ViewControllerFromHandle().

Referenced by flutter::FlutterViewController::ForceRedraw().

◆ FlutterDesktopViewControllerGetEngine()

FlutterDesktopEngineRef FlutterDesktopViewControllerGetEngine ( FlutterDesktopViewControllerRef  ref)

Definition at line 148 of file flutter_windows.cc.

149  {
150  auto controller = ViewControllerFromHandle(ref);
151  return HandleForEngine(controller->engine());
152 }

References HandleForEngine(), and ViewControllerFromHandle().

Referenced by flutter::testing::TEST_F().

◆ FlutterDesktopViewControllerGetView()

FlutterDesktopViewRef FlutterDesktopViewControllerGetView ( FlutterDesktopViewControllerRef  ref)

Definition at line 154 of file flutter_windows.cc.

155  {
156  auto controller = ViewControllerFromHandle(ref);
157  return HandleForView(controller->view());
158 }

References HandleForView(), and ViewControllerFromHandle().

Referenced by flutter::FlutterViewController::FlutterViewController(), and flutter::testing::TEST_F().

◆ FlutterDesktopViewControllerGetViewId()

FlutterDesktopViewId FlutterDesktopViewControllerGetViewId ( FlutterDesktopViewControllerRef  ref)

Definition at line 142 of file flutter_windows.cc.

143  {
144  auto controller = ViewControllerFromHandle(ref);
145  return static_cast<FlutterDesktopViewId>(controller->view()->view_id());
146 }
int64_t FlutterDesktopViewId

References ViewControllerFromHandle().

Referenced by flutter::testing::TEST_F(), and flutter::FlutterViewController::view_id().

◆ FlutterDesktopViewControllerHandleTopLevelWindowProc()

bool FlutterDesktopViewControllerHandleTopLevelWindowProc ( FlutterDesktopViewControllerRef  ref,
HWND  hwnd,
UINT  message,
WPARAM  wparam,
LPARAM  lparam,
LRESULT *  result 
)

Definition at line 166 of file flutter_windows.cc.

172  {
173  auto controller = ViewControllerFromHandle(ref);
174  std::optional<LRESULT> delegate_result =
175  controller->engine()
176  ->window_proc_delegate_manager()
177  ->OnTopLevelWindowProc(hwnd, message, wparam, lparam);
178  if (delegate_result) {
179  *result = *delegate_result;
180  }
181  return delegate_result.has_value();
182 }

References message, and ViewControllerFromHandle().

Referenced by flutter::FlutterViewController::HandleTopLevelWindowProc().

◆ FlutterDesktopViewGetGraphicsAdapter()

IDXGIAdapter* FlutterDesktopViewGetGraphicsAdapter ( FlutterDesktopViewRef  view)

Definition at line 287 of file flutter_windows.cc.

287  {
288  auto engine = ViewFromHandle(view)->GetEngine();
289  IDXGIAdapter* adapter;
291  &adapter)) {
292  return nullptr;
293  }
294  return adapter;
295 }
FlutterWindowsEngine * GetEngine() const
static flutter::FlutterWindowsView * ViewFromHandle(FlutterDesktopViewRef ref)

References FlutterDesktopEngineGetGraphicsAdapter(), flutter::FlutterWindowsView::GetEngine(), HandleForEngine(), and ViewFromHandle().

Referenced by flutter::FlutterView::GetGraphicsAdapter(), and flutter::testing::TEST_F().

◆ FlutterDesktopViewGetHWND()

HWND FlutterDesktopViewGetHWND ( FlutterDesktopViewRef  view)

◆ HandleForEngine()

static FlutterDesktopEngineRef HandleForEngine ( flutter::FlutterWindowsEngine engine)
static

Definition at line 38 of file flutter_windows.cc.

39  {
40  return reinterpret_cast<FlutterDesktopEngineRef>(engine);
41 }
struct FlutterDesktopEngine * FlutterDesktopEngineRef

Referenced by FlutterDesktopEngineCreate(), FlutterDesktopEngineForId(), FlutterDesktopPluginRegistrarGetGraphicsAdapter(), FlutterDesktopViewControllerGetEngine(), and FlutterDesktopViewGetGraphicsAdapter().

◆ HandleForTextureRegistrar()

static FlutterDesktopTextureRegistrarRef HandleForTextureRegistrar ( flutter::FlutterWindowsTextureRegistrar registrar)
static

Definition at line 70 of file flutter_windows.cc.

71  {
72  return reinterpret_cast<FlutterDesktopTextureRegistrarRef>(registrar);
73 }
struct FlutterDesktopTextureRegistrar * FlutterDesktopTextureRegistrarRef

Referenced by FlutterDesktopEngineGetTextureRegistrar(), and FlutterDesktopRegistrarGetTextureRegistrar().

◆ HandleForView()

static FlutterDesktopViewRef HandleForView ( flutter::FlutterWindowsView view)
static

Definition at line 59 of file flutter_windows.cc.

59  {
60  return reinterpret_cast<FlutterDesktopViewRef>(view);
61 }
struct FlutterDesktopView * FlutterDesktopViewRef

Referenced by FlutterDesktopPluginRegistrarGetView(), FlutterDesktopPluginRegistrarGetViewById(), and FlutterDesktopViewControllerGetView().

◆ HandleForViewController()

static FlutterDesktopViewControllerRef HandleForViewController ( flutter::FlutterWindowsViewController view_controller)
static

Definition at line 48 of file flutter_windows.cc.

49  {
50  return reinterpret_cast<FlutterDesktopViewControllerRef>(view_controller);
51 }
struct FlutterDesktopViewController * FlutterDesktopViewControllerRef

Referenced by CreateViewController().

◆ TextureRegistrarFromHandle()

◆ ViewControllerFromHandle()

◆ ViewFromHandle()

static flutter::FlutterWindowsView* ViewFromHandle ( FlutterDesktopViewRef  ref)
static

Definition at line 54 of file flutter_windows.cc.

54  {
55  return reinterpret_cast<flutter::FlutterWindowsView*>(ref);
56 }

Referenced by FlutterDesktopViewGetGraphicsAdapter(), and FlutterDesktopViewGetHWND().