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)
 
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)
 
HWND FlutterDesktopViewGetHWND (FlutterDesktopViewRef view)
 
IDXGIAdapter * FlutterDesktopViewGetGraphicsAdapter (FlutterDesktopViewRef view)
 
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)
 
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->windows_proc_table());
88 
89  std::unique_ptr<flutter::FlutterWindowsEngine> engine;
90  if (owns_engine) {
91  engine = std::unique_ptr<flutter::FlutterWindowsEngine>(engine_ptr);
92  }
93 
94  std::unique_ptr<flutter::FlutterWindowsView> view =
95  engine_ptr->CreateView(std::move(window_wrapper));
96  auto controller = std::make_unique<flutter::FlutterWindowsViewController>(
97  std::move(engine), std::move(view));
98 
99  controller->view()->CreateRenderSurface();
100  if (!controller->engine()->running()) {
101  if (!controller->engine()->Run()) {
102  return nullptr;
103  }
104  }
105 
106  // Must happen after engine is running.
107  controller->view()->SendInitialBounds();
108 
109  // The Windows embedder listens to accessibility updates using the
110  // view's HWND. The embedder's accessibility features may be stale if
111  // the app was in headless mode.
112  controller->engine()->UpdateAccessibilityFeatures();
113 
114  return HandleForViewController(controller.release());
115 }

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

Referenced by FlutterDesktopEngineCreateViewController(), and FlutterDesktopViewControllerCreate().

◆ EngineFromHandle()

◆ FlutterDesktopEngineCreate()

FlutterDesktopEngineRef FlutterDesktopEngineCreate ( const FlutterDesktopEngineProperties engine_properties)

Definition at line 178 of file flutter_windows.cc.

179  {
180  flutter::FlutterProjectBundle project(*engine_properties);
181  auto engine = std::make_unique<flutter::FlutterWindowsEngine>(project);
182  return HandleForEngine(engine.release());
183 }

References HandleForEngine().

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

◆ FlutterDesktopEngineCreateViewController()

FlutterDesktopViewControllerRef FlutterDesktopEngineCreateViewController ( FlutterDesktopEngineRef  engine,
const FlutterDesktopViewControllerProperties properties 
)

Definition at line 124 of file flutter_windows.cc.

126  {
127  return CreateViewController(engine, properties->width, properties->height,
128  /*owns_engine=*/false);
129 }

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

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

◆ FlutterDesktopEngineDestroy()

bool FlutterDesktopEngineDestroy ( FlutterDesktopEngineRef  engine_ref)

Definition at line 185 of file flutter_windows.cc.

185  {
186  flutter::FlutterWindowsEngine* engine = EngineFromHandle(engine_ref);
187  bool result = true;
188  if (engine->running()) {
189  result = engine->Stop();
190  }
191  delete engine;
192  return result;
193 }

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

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

◆ FlutterDesktopEngineGetMessenger()

FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger ( FlutterDesktopEngineRef  engine)

Definition at line 223 of file flutter_windows.cc.

224  {
225  return EngineFromHandle(engine)->messenger();
226 }

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

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

◆ FlutterDesktopEngineGetPluginRegistrar()

FlutterDesktopPluginRegistrarRef FlutterDesktopEngineGetPluginRegistrar ( FlutterDesktopEngineRef  engine,
const char *  plugin_name 
)

Definition at line 213 of file flutter_windows.cc.

215  {
216  // Currently, one registrar acts as the registrar for all plugins, so the
217  // name is ignored. It is part of the API to reduce churn in the future when
218  // aligning more closely with the Flutter registrar system.
219 
220  return EngineFromHandle(engine)->GetRegistrar();
221 }

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

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

◆ FlutterDesktopEngineGetTextureRegistrar()

FlutterDesktopTextureRegistrarRef FlutterDesktopEngineGetTextureRegistrar ( FlutterDesktopEngineRef  engine)

Definition at line 228 of file flutter_windows.cc.

229  {
231  EngineFromHandle(engine)->texture_registrar());
232 }

References EngineFromHandle(), and HandleForTextureRegistrar().

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

◆ FlutterDesktopEngineProcessExternalWindowMessage()

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

Definition at line 261 of file flutter_windows.cc.

267  {
268  std::optional<LRESULT> lresult =
270  wparam, lparam);
271  if (result && lresult.has_value()) {
272  *result = lresult.value();
273  }
274  return lresult.has_value();
275 }

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

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

◆ FlutterDesktopEngineProcessMessages()

uint64_t FlutterDesktopEngineProcessMessages ( FlutterDesktopEngineRef  engine)

Definition at line 205 of file flutter_windows.cc.

205  {
206  return std::chrono::nanoseconds::max().count();
207 }

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

◆ FlutterDesktopEngineRegisterPlatformViewType()

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

Definition at line 277 of file flutter_windows.cc.

280  {
281  // TODO(schectman): forward to platform view manager.
282  // https://github.com/flutter/flutter/issues/143375
283 }

◆ FlutterDesktopEngineReloadSystemFonts()

void FlutterDesktopEngineReloadSystemFonts ( FlutterDesktopEngineRef  engine)

◆ FlutterDesktopEngineRun()

bool FlutterDesktopEngineRun ( FlutterDesktopEngineRef  engine,
const char *  entry_point 
)

Definition at line 195 of file flutter_windows.cc.

196  {
197  std::string_view entry_point_view{""};
198  if (entry_point != nullptr) {
199  entry_point_view = entry_point;
200  }
201 
202  return EngineFromHandle(engine)->Run(entry_point_view);
203 }

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 311 of file flutter_windows.cc.

311  {
312  return flutter::GetDpiForHWND(hwnd);
313 }

References flutter::GetDpiForHWND().

◆ FlutterDesktopGetDpiForMonitor()

UINT FlutterDesktopGetDpiForMonitor ( HMONITOR  monitor)

Definition at line 315 of file flutter_windows.cc.

315  {
316  return flutter::GetDpiForMonitor(monitor);
317 }

References flutter::GetDpiForMonitor().

◆ FlutterDesktopMessengerAddRef()

◆ FlutterDesktopMessengerIsAvailable()

◆ FlutterDesktopMessengerLock()

FlutterDesktopMessengerRef FlutterDesktopMessengerLock ( FlutterDesktopMessengerRef  messenger)

Definition at line 407 of file flutter_windows.cc.

408  {
410  return messenger;
411 }

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

◆ FlutterDesktopMessengerRelease()

void FlutterDesktopMessengerRelease ( FlutterDesktopMessengerRef  messenger)

◆ FlutterDesktopMessengerSend()

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

Definition at line 357 of file flutter_windows.cc.

360  {
361  return FlutterDesktopMessengerSendWithReply(messenger, channel, message,
362  message_size, nullptr, nullptr);
363 }

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 365 of file flutter_windows.cc.

369  {
370  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
371  << "Messenger must reference a running engine to send a response";
372 
374  ->GetEngine()
375  ->SendPlatformMessageResponse(handle, data, data_length);
376 }

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 343 of file flutter_windows.cc.

348  {
349  FML_DCHECK(FlutterDesktopMessengerIsAvailable(messenger))
350  << "Messenger must reference a running engine to send a message";
351 
353  ->GetEngine()
354  ->SendPlatformMessage(channel, message, message_size, reply, user_data);
355 }

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 
)

◆ FlutterDesktopMessengerUnlock()

void FlutterDesktopMessengerUnlock ( FlutterDesktopMessengerRef  messenger)

◆ FlutterDesktopPluginRegistrarGetMessenger()

FlutterDesktopMessengerRef FlutterDesktopPluginRegistrarGetMessenger ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 332 of file flutter_windows.cc.

333  {
334  return registrar->engine->messenger();
335 }

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

◆ FlutterDesktopPluginRegistrarGetView()

◆ FlutterDesktopPluginRegistrarGetViewById()

FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetViewById ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopViewId  view_id 
)

◆ FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate()

◆ FlutterDesktopPluginRegistrarSetDestructionHandler()

void FlutterDesktopPluginRegistrarSetDestructionHandler ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopOnPluginRegistrarDestroyed  callback 
)

◆ FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate()

◆ FlutterDesktopRegistrarGetTextureRegistrar()

◆ FlutterDesktopResyncOutputStreams()

void FlutterDesktopResyncOutputStreams ( )

Definition at line 319 of file flutter_windows.cc.

319  {
320  FILE* unused;
321  if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
322  _dup2(_fileno(stdout), 1);
323  }
324  if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
325  _dup2(_fileno(stdout), 2);
326  }
327  std::ios::sync_with_stdio();
328 }

◆ FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable()

bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable ( FlutterDesktopTextureRegistrarRef  texture_registrar,
int64_t  texture_id 
)

◆ FlutterDesktopTextureRegistrarRegisterExternalTexture()

int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture ( FlutterDesktopTextureRegistrarRef  texture_registrar,
const FlutterDesktopTextureInfo texture_info 
)

Definition at line 422 of file flutter_windows.cc.

424  {
425  return TextureRegistrarFromHandle(texture_registrar)
426  ->RegisterTexture(texture_info);
427 }

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 429 of file flutter_windows.cc.

433  {
434  auto registrar = TextureRegistrarFromHandle(texture_registrar);
435  if (callback) {
436  registrar->UnregisterTexture(
438  return;
439  }
440  registrar->UnregisterTexture(texture_id);
441 }

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 117 of file flutter_windows.cc.

120  {
121  return CreateViewController(engine, width, height, /*owns_engine=*/true);
122 }

References CreateViewController().

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

◆ FlutterDesktopViewControllerDestroy()

void FlutterDesktopViewControllerDestroy ( FlutterDesktopViewControllerRef  ref)

Definition at line 131 of file flutter_windows.cc.

131  {
132  auto controller = ViewControllerFromHandle(ref);
133  delete controller;
134 }

References ViewControllerFromHandle().

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

◆ FlutterDesktopViewControllerForceRedraw()

void FlutterDesktopViewControllerForceRedraw ( FlutterDesktopViewControllerRef  ref)

Definition at line 154 of file flutter_windows.cc.

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

References ViewControllerFromHandle().

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

◆ FlutterDesktopViewControllerGetEngine()

FlutterDesktopEngineRef FlutterDesktopViewControllerGetEngine ( FlutterDesktopViewControllerRef  ref)

Definition at line 142 of file flutter_windows.cc.

143  {
144  auto controller = ViewControllerFromHandle(ref);
145  return HandleForEngine(controller->engine());
146 }

References HandleForEngine(), and ViewControllerFromHandle().

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

◆ FlutterDesktopViewControllerGetView()

FlutterDesktopViewRef FlutterDesktopViewControllerGetView ( FlutterDesktopViewControllerRef  ref)

Definition at line 148 of file flutter_windows.cc.

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

References HandleForView(), and ViewControllerFromHandle().

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

◆ FlutterDesktopViewControllerGetViewId()

FlutterDesktopViewId FlutterDesktopViewControllerGetViewId ( FlutterDesktopViewControllerRef  ref)

Definition at line 136 of file flutter_windows.cc.

137  {
138  auto controller = ViewControllerFromHandle(ref);
139  return static_cast<FlutterDesktopViewId>(controller->view()->view_id());
140 }

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 160 of file flutter_windows.cc.

166  {
167  auto controller = ViewControllerFromHandle(ref);
168  std::optional<LRESULT> delegate_result =
169  controller->engine()
170  ->window_proc_delegate_manager()
171  ->OnTopLevelWindowProc(hwnd, message, wparam, lparam);
172  if (delegate_result) {
173  *result = *delegate_result;
174  }
175  return delegate_result.has_value();
176 }

References message, and ViewControllerFromHandle().

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

◆ FlutterDesktopViewGetGraphicsAdapter()

IDXGIAdapter* FlutterDesktopViewGetGraphicsAdapter ( FlutterDesktopViewRef  view)

Definition at line 245 of file flutter_windows.cc.

245  {
246  auto egl_manager = ViewFromHandle(view)->GetEngine()->egl_manager();
247  if (egl_manager) {
248  Microsoft::WRL::ComPtr<ID3D11Device> d3d_device;
249  Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device;
250  if (egl_manager->GetDevice(d3d_device.GetAddressOf()) &&
251  SUCCEEDED(d3d_device.As(&dxgi_device))) {
252  IDXGIAdapter* adapter;
253  if (SUCCEEDED(dxgi_device->GetAdapter(&adapter))) {
254  return adapter;
255  }
256  }
257  }
258  return nullptr;
259 }

References flutter::FlutterWindowsEngine::egl_manager(), flutter::FlutterWindowsView::GetEngine(), 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 }

Referenced by FlutterDesktopEngineCreate(), and FlutterDesktopViewControllerGetEngine().

◆ 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 }

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 }

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 }

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().

FlutterDesktopViewControllerProperties::height
int height
Definition: flutter_windows_internal.h:23
flutter::kImplicitViewId
constexpr FlutterViewId kImplicitViewId
Definition: flutter_windows_engine.h:54
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
flutter::FlutterWindowsEngine::view
FlutterWindowsView * view(FlutterViewId view_id) const
Definition: flutter_windows_engine.cc:533
flutter::FlutterWindowsView
Definition: flutter_windows_view.h:34
HandleForView
static FlutterDesktopViewRef HandleForView(flutter::FlutterWindowsView *view)
Definition: flutter_windows.cc:59
CreateViewController
static FlutterDesktopViewControllerRef CreateViewController(FlutterDesktopEngineRef engine_ref, int width, int height, bool owns_engine)
Definition: flutter_windows.cc:79
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
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
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:727
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
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
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::FlutterWindowsEngine::CreateView
std::unique_ptr< FlutterWindowsView > CreateView(std::unique_ptr< WindowBindingHandler > window)
Definition: flutter_windows_engine.cc:492
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
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
FlutterDesktopViewControllerRef
struct FlutterDesktopViewController * FlutterDesktopViewControllerRef
Definition: flutter_windows.h:25
FlutterDesktopPluginRegistrar::engine
flutter::FlutterWindowsEngine * engine
Definition: window_state.h:25
flutter::FlutterWindowsEngine::SendPlatformMessageResponse
void SendPlatformMessageResponse(const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
Definition: flutter_windows_engine.cc:608
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
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:731
FlutterDesktopMessengerIsAvailable
bool FlutterDesktopMessengerIsAvailable(FlutterDesktopMessengerRef messenger)
Definition: flutter_windows.cc:402
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
message
Win32Message message
Definition: keyboard_unittests.cc:137
flutter::FlutterDesktopMessenger::FromRef
static FlutterDesktopMessenger * FromRef(FlutterDesktopMessengerRef ref)
Convert from FlutterDesktopMessengerRef.
Definition: flutter_desktop_messenger.h:33
FlutterDesktopViewControllerProperties::width
int width
Definition: flutter_windows_internal.h:20
flutter::FlutterWindowsEngine::egl_manager
egl::Manager * egl_manager() const
Definition: flutter_windows_engine.h:159
flutter::FlutterWindowsEngine::Run
bool Run()
Definition: flutter_windows_engine.cc:237
texture_id
uint32_t texture_id
Definition: compositor_opengl.cc:20
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:343
flutter::FlutterWindowsEngine::ReloadSystemFonts
void ReloadSystemFonts()
Definition: flutter_windows_engine.cc:629
callback
FlutterDesktopBinaryReply callback
Definition: flutter_windows_view_unittests.cc:51