Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
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 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::unique_ptr< FlutterWindowsView > CreateView(std::unique_ptr< WindowBindingHandler > window, bool is_sized_to_content, const BoxConstraints &box_constraints, FlutterWindowsViewSizingDelegate *sizing_delegate=nullptr)
std::shared_ptr< DisplayManagerWin32 > display_manager()
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().

◆ FlutterDesktopEngineGetGraphicsAdapter()

bool FlutterDesktopEngineGetGraphicsAdapter ( FlutterDesktopEngineRef  engine,
IDXGIAdapter **  adapter_out 
)

Definition at line 267 of file flutter_windows.cc.

268 {
269 auto egl_manager = EngineFromHandle(engine)->egl_manager();
270 if (egl_manager) {
271 Microsoft::WRL::ComPtr<ID3D11Device> d3d_device;
272 Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device;
273 if (egl_manager->GetDevice(d3d_device.GetAddressOf()) &&
274 SUCCEEDED(d3d_device.As(&dxgi_device))) {
275 if (SUCCEEDED(dxgi_device->GetAdapter(adapter_out))) {
276 return true;
277 }
278 }
279 }
280 return false;
281}
#define SUCCEEDED(hr)

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

Referenced by FlutterDesktopPluginRegistrarGetGraphicsAdapter(), and FlutterDesktopViewGetGraphicsAdapter().

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

289 {
290 std::optional<LRESULT> lresult =
292 wparam, lparam);
293 if (result && lresult.has_value()) {
294 *result = lresult.value();
295 }
296 return lresult.has_value();
297}
std::optional< LRESULT > ProcessExternalWindowMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
const char * 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 299 of file flutter_windows.cc.

302 {
303 // TODO(schectman): forward to platform view manager.
304 // https://github.com/flutter/flutter/issues/143375
305}

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

340 {
341 return flutter::GetDpiForHWND(hwnd);
342}
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 344 of file flutter_windows.cc.

344 {
345 return flutter::GetDpiForMonitor(monitor);
346}
UINT GetDpiForMonitor(HMONITOR monitor)
Definition dpi_utils.cc:132

References flutter::GetDpiForMonitor().

◆ FlutterDesktopMessengerAddRef()

FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef ( FlutterDesktopMessengerRef  messenger)

Definition at line 420 of file flutter_windows.cc.

421 {
423 ->AddRef()
424 ->ToRef();
425}
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 386 of file flutter_windows.cc.

389 {
391 message_size, nullptr, nullptr);
392}
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 394 of file flutter_windows.cc.

398 {
400 << "Messenger must reference a running engine to send a response";
401
403 ->GetEngine()
404 ->SendPlatformMessageResponse(handle, data, data_length);
405}
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

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

377 {
379 << "Messenger must reference a running engine to send a message";
380
382 ->GetEngine()
383 ->SendPlatformMessage(channel, message, message_size, reply, user_data);
384}
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)

◆ FlutterDesktopPluginRegistrarGetGraphicsAdapter()

bool FlutterDesktopPluginRegistrarGetGraphicsAdapter ( FlutterDesktopPluginRegistrarRef  registrar,
IDXGIAdapter **  adapter_out 
)

Definition at line 333 of file flutter_windows.cc.

335 {
337 HandleForEngine(registrar->engine), adapter_out);
338}
bool FlutterDesktopEngineGetGraphicsAdapter(FlutterDesktopEngineRef engine, IDXGIAdapter **adapter_out)
FlutterDesktopEngineState * engine

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

◆ FlutterDesktopPluginRegistrarGetMessenger()

FlutterDesktopMessengerRef FlutterDesktopPluginRegistrarGetMessenger ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 361 of file flutter_windows.cc.

362 {
363 return registrar->engine->messenger();
364}
FlutterDesktopMessengerReferenceOwner messenger

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

◆ FlutterDesktopPluginRegistrarGetView()

FlutterDesktopViewRef FlutterDesktopPluginRegistrarGetView ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 307 of file flutter_windows.cc.

308 {
309 return HandleForView(registrar->engine->view(flutter::kImplicitViewId));
310}
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 312 of file flutter_windows.cc.

314 {
315 return HandleForView(registrar->engine->view(view_id));
316}
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 318 of file flutter_windows.cc.

321 {
322 registrar->engine->window_proc_delegate_manager()
323 ->RegisterTopLevelWindowProcDelegate(delegate, user_data);
324}

References FlutterDesktopPluginRegistrar::engine, and user_data.

◆ FlutterDesktopPluginRegistrarSetDestructionHandler()

void FlutterDesktopPluginRegistrarSetDestructionHandler ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopOnPluginRegistrarDestroyed  callback 
)

Definition at line 366 of file flutter_windows.cc.

368 {
369 registrar->engine->AddPluginRegistrarDestructionCallback(callback, registrar);
370}

References callback, and FlutterDesktopPluginRegistrar::engine.

◆ FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate()

void FlutterDesktopPluginRegistrarUnregisterTopLevelWindowProcDelegate ( FlutterDesktopPluginRegistrarRef  registrar,
FlutterDesktopWindowProcCallback  delegate 
)

Definition at line 326 of file flutter_windows.cc.

328 {
329 registrar->engine->window_proc_delegate_manager()
330 ->UnregisterTopLevelWindowProcDelegate(delegate);
331}

References FlutterDesktopPluginRegistrar::engine.

◆ FlutterDesktopRegistrarGetTextureRegistrar()

FlutterDesktopTextureRegistrarRef FlutterDesktopRegistrarGetTextureRegistrar ( FlutterDesktopPluginRegistrarRef  registrar)

Definition at line 446 of file flutter_windows.cc.

447 {
448 return HandleForTextureRegistrar(registrar->engine->texture_registrar());
449}

References FlutterDesktopPluginRegistrar::engine, and HandleForTextureRegistrar().

◆ FlutterDesktopResyncOutputStreams()

void FlutterDesktopResyncOutputStreams ( )

Definition at line 348 of file flutter_windows.cc.

348 {
349 FILE* unused;
350 if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
351 _dup2(_fileno(stdout), 1);
352 }
353 if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
354 _dup2(_fileno(stdout), 2);
355 }
356 std::ios::sync_with_stdio();
357}

◆ FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable()

bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable ( FlutterDesktopTextureRegistrarRef  texture_registrar,
int64_t  texture_id 
)

Definition at line 472 of file flutter_windows.cc.

474 {
477}
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 458 of file flutter_windows.cc.

462 {
464 if (callback) {
465 registrar->UnregisterTexture(
467 return;
468 }
469 registrar->UnregisterTexture(texture_id);
470}

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 engine = ViewFromHandle(view)->GetEngine();
259 IDXGIAdapter* adapter;
261 &adapter)) {
262 return nullptr;
263 }
264 return adapter;
265}
FlutterWindowsEngine * GetEngine() const
static flutter::FlutterWindowsView * ViewFromHandle(FlutterDesktopViewRef ref)

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

◆ FlutterDesktopViewGetHWND()

HWND FlutterDesktopViewGetHWND ( FlutterDesktopViewRef  view)

Definition at line 253 of file flutter_windows.cc.

253 {
254 return ViewFromHandle(view)->GetWindowHandle();
255}

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

◆ HandleForEngine()

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