Flutter Engine
 
Loading...
Searching...
No Matches
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)
 
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->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 =
96 engine_ptr->CreateView(std::move(window_wrapper));
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)
FlutterEngine engine
Definition main.cc:84
FlView * view
static flutter::FlutterWindowsEngine * EngineFromHandle(FlutterDesktopEngineRef ref)
static FlutterDesktopViewControllerRef HandleForViewController(flutter::FlutterWindowsViewController *view_controller)
int32_t height
int32_t width

References flutter::FlutterWindowsEngine::CreateView(), flutter::FlutterWindowsEngine::display_manager(), engine, EngineFromHandle(), HandleForViewController(), height, view, width, 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 engine, and HandleForEngine().

◆ 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(), engine, FlutterDesktopViewControllerProperties::height, and FlutterDesktopViewControllerProperties::width.

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

◆ FlutterDesktopEngineDestroy()

bool FlutterDesktopEngineDestroy ( FlutterDesktopEngineRef  engine_ref)

Definition at line 191 of file flutter_windows.cc.

191 {
193 bool result = true;
194 if (engine->running()) {
195 result = engine->Stop();
196 }
197 delete engine;
198 return result;
199}

References engine, and EngineFromHandle().

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

◆ FlutterDesktopEngineGetMessenger()

FlutterDesktopMessengerRef FlutterDesktopEngineGetMessenger ( FlutterDesktopEngineRef  engine)

Definition at line 235 of file flutter_windows.cc.

236 {
238}
FlutterDesktopMessengerRef messenger()

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

◆ 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
233}
FlutterDesktopPluginRegistrarRef GetRegistrar()

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

◆ FlutterDesktopEngineGetTextureRegistrar()

FlutterDesktopTextureRegistrarRef FlutterDesktopEngineGetTextureRegistrar ( FlutterDesktopEngineRef  engine)

Definition at line 240 of file flutter_windows.cc.

241 {
244}
static FlutterDesktopTextureRegistrarRef HandleForTextureRegistrar(flutter::FlutterWindowsTextureRegistrar *registrar)
G_BEGIN_DECLS FlTextureRegistrar * texture_registrar

References engine, EngineFromHandle(), HandleForTextureRegistrar(), and texture_registrar.

◆ FlutterDesktopEngineProcessExternalWindowMessage()

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

Definition at line 273 of file flutter_windows.cc.

279 {
280 std::optional<LRESULT> lresult =
282 wparam, lparam);
283 if (result && lresult.has_value()) {
284 *result = lresult.value();
285 }
286 return lresult.has_value();
287}
std::optional< LRESULT > ProcessExternalWindowMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
G_BEGIN_DECLS GBytes * message

References engine, EngineFromHandle(), message, and flutter::FlutterWindowsEngine::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}

◆ FlutterDesktopEngineRegisterPlatformViewType()

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

Definition at line 289 of file flutter_windows.cc.

292 {
293 // TODO(schectman): forward to platform view manager.
294 // https://github.com/flutter/flutter/issues/143375
295}

◆ 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 engine, EngineFromHandle(), and flutter::FlutterWindowsEngine::Run().

◆ FlutterDesktopEngineSetNextFrameCallback()

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

◆ FlutterDesktopGetDpiForHWND()

UINT FlutterDesktopGetDpiForHWND ( HWND  hwnd)

Definition at line 323 of file flutter_windows.cc.

323 {
324 return flutter::GetDpiForHWND(hwnd);
325}
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 327 of file flutter_windows.cc.

327 {
328 return flutter::GetDpiForMonitor(monitor);
329}
UINT GetDpiForMonitor(HMONITOR monitor)
Definition dpi_utils.cc:132

References flutter::GetDpiForMonitor().

◆ FlutterDesktopMessengerAddRef()

FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef ( FlutterDesktopMessengerRef  messenger)

Definition at line 403 of file flutter_windows.cc.

404 {
406 ->AddRef()
407 ->ToRef();
408}
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)

◆ FlutterDesktopMessengerRelease()

◆ FlutterDesktopMessengerSend()

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

Definition at line 369 of file flutter_windows.cc.

372 {
374 message_size, nullptr, nullptr);
375}
const gchar * channel
bool FlutterDesktopMessengerSendWithReply(FlutterDesktopMessengerRef messenger, const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)

References channel, FlutterDesktopMessengerSendWithReply(), and message.

◆ FlutterDesktopMessengerSendResponse()

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

Definition at line 377 of file flutter_windows.cc.

381 {
383 << "Messenger must reference a running engine to send a response";
384
386 ->GetEngine()
387 ->SendPlatformMessageResponse(handle, data, data_length);
388}
void SendPlatformMessageResponse(const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
bool FlutterDesktopMessengerIsAvailable(FlutterDesktopMessengerRef messenger)
#define FML_DCHECK(condition)
Definition logging.h:122
std::shared_ptr< const fml::Mapping > data

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

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

360 {
362 << "Messenger must reference a running engine to send a message";
363
365 ->GetEngine()
366 ->SendPlatformMessage(channel, message, message_size, reply, user_data);
367}
bool SendPlatformMessage(const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)

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

Referenced by FlutterDesktopMessengerSend().

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

345 {
346 return registrar->engine->messenger();
347}
FlutterDesktopMessengerReferenceOwner messenger
FlutterDesktopEngineState * engine

References FlutterDesktopPluginRegistrar::engine, and FlutterDesktopEngineState::messenger.

◆ FlutterDesktopPluginRegistrarGetView()

FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 297 of file flutter_windows.cc.

298 {
299 return HandleForView(registrar->engine->view(flutter::kImplicitViewId));
300}
static FlutterDesktopViewRef HandleForView(flutter::FlutterWindowsView *view)
constexpr FlutterViewId kImplicitViewId

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

◆ FlutterDesktopPluginRegistrarGetViewById()

FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetViewById ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopViewId  view_id 
)

Definition at line 302 of file flutter_windows.cc.

304 {
305 return HandleForView(registrar->engine->view(view_id));
306}
G_BEGIN_DECLS FlutterViewId view_id

References FlutterDesktopPluginRegistrar::engine, HandleForView(), and view_id.

◆ FlutterDesktopPluginRegistrarRegisterTopLevelWindowProcDelegate()

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

Definition at line 308 of file flutter_windows.cc.

311 {
312 registrar->engine->window_proc_delegate_manager()
313 ->RegisterTopLevelWindowProcDelegate(delegate, user_data);
314}

References FlutterDesktopPluginRegistrar::engine, and user_data.

◆ FlutterDesktopPluginRegistrarSetDestructionHandler()

void FlutterDesktopPluginRegistrarSetDestructionHandler ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopOnPluginRegistrarDestroyed  callback 
)

Definition at line 349 of file flutter_windows.cc.

351 {
352 registrar->engine->AddPluginRegistrarDestructionCallback(callback, registrar);
353}

References callback, and FlutterDesktopPluginRegistrar::engine.

◆ FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate()

void FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopWindowProcCallback  delegate 
)

Definition at line 316 of file flutter_windows.cc.

318 {
319 registrar->engine->window_proc_delegate_manager()
320 ->UnregisterTopLevelWindowProcDelegate(delegate);
321}

References FlutterDesktopPluginRegistrar::engine.

◆ FlutterDesktopRegistrarGetTextureRegistrar()

FlutterDesktopTextureRegistrarRef FlutterDesktopRegistrarGetTextureRegistrar ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 429 of file flutter_windows.cc.

430 {
431 return HandleForTextureRegistrar(registrar->engine->texture_registrar());
432}

References FlutterDesktopPluginRegistrar::engine, and HandleForTextureRegistrar().

◆ FlutterDesktopResyncOutputStreams()

void FlutterDesktopResyncOutputStreams ( )

Definition at line 331 of file flutter_windows.cc.

331 {
332 FILE* unused;
333 if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
334 _dup2(_fileno(stdout), 1);
335 }
336 if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
337 _dup2(_fileno(stdout), 2);
338 }
339 std::ios::sync_with_stdio();
340}

◆ FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable()

bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable ( FlutterDesktopTextureRegistrarRef  texture_registrar,
int64_t  texture_id 
)

Definition at line 455 of file flutter_windows.cc.

457 {
460}
static flutter::FlutterWindowsTextureRegistrar * TextureRegistrarFromHandle(FlutterDesktopTextureRegistrarRef ref)
int64_t texture_id

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

◆ FlutterDesktopTextureRegistrarRegisterExternalTexture()

int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture ( FlutterDesktopTextureRegistrarRef  texture_registrar,
const FlutterDesktopTextureInfo texture_info 
)

◆ FlutterDesktopTextureRegistrarUnregisterExternalTexture()

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

Definition at line 441 of file flutter_windows.cc.

445 {
447 if (callback) {
448 registrar->UnregisterTexture(
450 return;
451 }
452 registrar->UnregisterTexture(texture_id);
453}

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

◆ 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(), engine, height, and width.

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

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

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

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

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

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

◆ FlutterDesktopViewGetGraphicsAdapter()

IDXGIAdapter * FlutterDesktopViewGetGraphicsAdapter ( FlutterDesktopViewRef  view)

Definition at line 257 of file flutter_windows.cc.

257 {
258 auto egl_manager = ViewFromHandle(view)->GetEngine()->egl_manager();
259 if (egl_manager) {
260 Microsoft::WRL::ComPtr<ID3D11Device> d3d_device;
261 Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device;
262 if (egl_manager->GetDevice(d3d_device.GetAddressOf()) &&
263 SUCCEEDED(d3d_device.As(&dxgi_device))) {
264 IDXGIAdapter* adapter;
265 if (SUCCEEDED(dxgi_device->GetAdapter(&adapter))) {
266 return adapter;
267 }
268 }
269 }
270 return nullptr;
271}
FlutterWindowsEngine * GetEngine() const
static flutter::FlutterWindowsView * ViewFromHandle(FlutterDesktopViewRef ref)
#define SUCCEEDED(hr)

References flutter::FlutterWindowsEngine::egl_manager(), flutter::FlutterWindowsView::GetEngine(), SUCCEEDED, view, and ViewFromHandle().

◆ FlutterDesktopViewGetHWND()

HWND FlutterDesktopViewGetHWND ( FlutterDesktopViewRef  view)

Definition at line 253 of file flutter_windows.cc.

253 {
255}

References flutter::FlutterWindowsView::GetWindowHandle(), view, and ViewFromHandle().

◆ HandleForEngine()

static FlutterDesktopEngineRef HandleForEngine ( flutter::FlutterWindowsEngine engine)
static

◆ 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

References view.

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