#include "flutter/shell/platform/glfw/public/flutter_glfw.h"#include <GLFW/glfw3.h>#include <algorithm>#include <atomic>#include <cassert>#include <chrono>#include <cstdlib>#include <filesystem>#include <iostream>#include <string>#include "flutter/common/constants.h"#include "flutter/shell/platform/common/client_wrapper/include/flutter/plugin_registrar.h"#include "flutter/shell/platform/common/incoming_message_dispatcher.h"#include "flutter/shell/platform/common/path_utils.h"#include "flutter/shell/platform/embedder/embedder.h"#include "flutter/shell/platform/glfw/glfw_event_loop.h"#include "flutter/shell/platform/glfw/headless_event_loop.h"#include "flutter/shell/platform/glfw/key_event_handler.h"#include "flutter/shell/platform/glfw/keyboard_hook_handler.h"#include "flutter/shell/platform/glfw/platform_handler.h"#include "flutter/shell/platform/glfw/system_utils.h"#include "flutter/shell/platform/glfw/text_input_plugin.h"Go to the source code of this file.
Classes | |
| struct | FlutterDesktopWindowControllerState |
| struct | FlutterDesktopWindow |
| struct | AOTDataDeleter |
| struct | FlutterDesktopEngineState |
| struct | FlutterDesktopPluginRegistrar |
| struct | FlutterDesktopMessenger |
Macros | |
| #define | GLFW_TRUE 1 |
| #define | GLFW_FALSE 0 |
Typedefs | |
| using | UniqueGLFWwindowPtr = std::unique_ptr< GLFWwindow, void(*)(GLFWwindow *)> |
| using | UniqueAotDataPtr = std::unique_ptr< _FlutterEngineAOTData, AOTDataDeleter > |
| using | FlutterDesktopMessengerReferenceOwner = std::unique_ptr< FlutterDesktopMessenger, decltype(&FlutterDesktopMessengerRelease)> |
| Maintains one ref on the FlutterDesktopMessenger's internal reference count. | |
Variables | |
| const int | kFlutterDesktopDontCare = GLFW_DONT_CARE |
| static constexpr double | kDpPerInch = 160.0 |
| #define GLFW_FALSE 0 |
Definition at line 37 of file flutter_glfw.cc.
| #define GLFW_TRUE 1 |
Definition at line 34 of file flutter_glfw.cc.
| using FlutterDesktopMessengerReferenceOwner = std::unique_ptr<FlutterDesktopMessenger, decltype(&FlutterDesktopMessengerRelease)> |
Maintains one ref on the FlutterDesktopMessenger's internal reference count.
Definition at line 113 of file flutter_glfw.cc.
| using UniqueAotDataPtr = std::unique_ptr<_FlutterEngineAOTData, AOTDataDeleter> |
Definition at line 111 of file flutter_glfw.cc.
| using UniqueGLFWwindowPtr = std::unique_ptr<GLFWwindow, void (*)(GLFWwindow*)> |
Definition at line 40 of file flutter_glfw.cc.
|
static |
Definition at line 310 of file flutter_glfw.cc.
References FlutterTaskRunnerDescription::post_task_callback, FlutterTaskRunnerDescription::runs_task_on_current_thread_callback, FlutterTaskRunnerDescription::struct_size, and FlutterTaskRunnerDescription::user_data.
Referenced by RunFlutterEngine().
|
static |
Definition at line 252 of file flutter_glfw.cc.
References FlutterPlatformMessage::channel, FlutterPlatformMessage::message, message, FlutterPlatformMessage::message_size, FlutterPlatformMessage::response_handle, and FlutterDesktopMessage::struct_size.
Referenced by EngineOnFlutterPlatformMessage(), and flutter::FlutterWindowsEngine::HandlePlatformMessage().
|
static |
Definition at line 238 of file flutter_glfw.cc.
References GLFW_FALSE, and window.
Referenced by FlutterDesktopCreateWindow().
|
static |
Definition at line 622 of file flutter_glfw.cc.
References user_data, and FlutterDesktopEngineState::window_controller.
Referenced by RunFlutterEngine().
|
static |
Definition at line 646 of file flutter_glfw.cc.
Referenced by RunFlutterEngine().
|
static |
Definition at line 598 of file flutter_glfw.cc.
References user_data, FlutterDesktopWindowControllerState::window, and FlutterDesktopEngineState::window_controller.
Referenced by RunFlutterEngine().
|
static |
Definition at line 610 of file flutter_glfw.cc.
References FlutterDesktopWindowControllerState::resource_window, user_data, and FlutterDesktopEngineState::window_controller.
Referenced by RunFlutterEngine().
|
static |
Definition at line 567 of file flutter_glfw.cc.
References ConvertToDesktopMessage(), GLFWAssignEventCallbacks(), GLFWClearEventCallbacks(), message, FlutterDesktopEngineState::message_dispatcher, FlutterPlatformMessage::struct_size, user_data, window, FlutterDesktopWindowControllerState::window, and FlutterDesktopEngineState::window_controller.
Referenced by RunFlutterEngine().
|
static |
Definition at line 634 of file flutter_glfw.cc.
References user_data, FlutterDesktopWindowControllerState::window, and FlutterDesktopEngineState::window_controller.
Referenced by RunFlutterEngine().
|
static |
Definition at line 652 of file flutter_glfw.cc.
References name.
Referenced by RunFlutterEngine().
| FlutterDesktopWindowControllerRef FlutterDesktopCreateWindow | ( | const FlutterDesktopWindowProperties & | window_properties, |
| const FlutterDesktopEngineProperties & | engine_properties | ||
| ) |
Definition at line 860 of file flutter_glfw.cc.
References CreateShareWindowForWindow(), GLFW_FALSE, GLFWClearCanvas(), FlutterDesktopWindowProperties::height, FlutterDesktopWindowProperties::prevent_resize, FlutterDesktopWindowProperties::title, FlutterDesktopWindowProperties::width, and window.
| void FlutterDesktopDestroyWindow | ( | FlutterDesktopWindowControllerRef | controller | ) |
Definition at line 933 of file flutter_glfw.cc.
References FlutterDesktopPluginRegistrar::destruction_handler, FlutterDesktopWindowControllerState::engine, and FlutterEngineShutdown().
| FlutterDesktopEngineRef FlutterDesktopGetEngine | ( | FlutterDesktopWindowControllerRef | controller | ) |
Definition at line 1047 of file flutter_glfw.cc.
References FlutterDesktopWindowControllerState::engine.
| FlutterDesktopPluginRegistrarRef FlutterDesktopGetPluginRegistrar | ( | FlutterDesktopEngineRef | engine, |
| const char * | plugin_name | ||
| ) |
Definition at line 1052 of file flutter_glfw.cc.
References engine.
| FlutterDesktopWindowRef FlutterDesktopGetWindow | ( | FlutterDesktopWindowControllerRef | controller | ) |
Definition at line 1039 of file flutter_glfw.cc.
References FlutterDesktopWindowControllerState::window_wrapper.
| bool FlutterDesktopInit | ( | ) |
Definition at line 850 of file flutter_glfw.cc.
References GLFWErrorCallback().
| FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef | ( | FlutterDesktopMessengerRef | messenger | ) |
Definition at line 205 of file flutter_glfw.cc.
References FlutterDesktopMessenger::AddRef().
Referenced by SetUpCommonEngineState().
| bool FlutterDesktopMessengerIsAvailable | ( | FlutterDesktopMessengerRef | messenger | ) |
Definition at line 215 of file flutter_glfw.cc.
References FlutterDesktopMessenger::GetEngine().
| FlutterDesktopMessengerRef FlutterDesktopMessengerLock | ( | FlutterDesktopMessengerRef | messenger | ) |
Definition at line 219 of file flutter_glfw.cc.
References FlutterDesktopMessenger::GetMutex().
| void FlutterDesktopMessengerRelease | ( | FlutterDesktopMessengerRef | messenger | ) |
Definition at line 211 of file flutter_glfw.cc.
References FlutterDesktopMessenger::Release().
Referenced by SetUpCommonEngineState().
| bool FlutterDesktopMessengerSend | ( | FlutterDesktopMessengerRef | messenger, |
| const char * | channel, | ||
| const uint8_t * | message, | ||
| const size_t | message_size | ||
| ) |
Definition at line 1161 of file flutter_glfw.cc.
References channel, FlutterDesktopMessengerSendWithReply(), and message.
| void FlutterDesktopMessengerSendResponse | ( | FlutterDesktopMessengerRef | messenger, |
| const FlutterDesktopMessageResponseHandle * | handle, | ||
| const uint8_t * | data, | ||
| size_t | data_length | ||
| ) |
Definition at line 1169 of file flutter_glfw.cc.
References data, FlutterEngineSendPlatformMessageResponse(), and FlutterDesktopMessenger::GetEngine().
| 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 1125 of file flutter_glfw.cc.
References channel, FlutterEngineSendPlatformMessage(), FlutterPlatformMessageCreateResponseHandle(), FlutterPlatformMessageReleaseResponseHandle(), FlutterDesktopMessenger::GetEngine(), kSuccess, message, and user_data.
Referenced by FlutterDesktopMessengerSend().
| void FlutterDesktopMessengerSetCallback | ( | FlutterDesktopMessengerRef | messenger, |
| const char * | channel, | ||
| FlutterDesktopMessageCallback | callback, | ||
| void * | user_data | ||
| ) |
Definition at line 1178 of file flutter_glfw.cc.
References callback, channel, FlutterDesktopMessenger::GetEngine(), FlutterDesktopEngineState::message_dispatcher, and user_data.
| void FlutterDesktopMessengerUnlock | ( | FlutterDesktopMessengerRef | messenger | ) |
Definition at line 225 of file flutter_glfw.cc.
References FlutterDesktopMessenger::GetMutex().
| void FlutterDesktopPluginRegistrarEnableInputBlocking | ( | FlutterDesktopPluginRegistrarRef | registrar, |
| const char * | channel | ||
| ) |
Definition at line 1098 of file flutter_glfw.cc.
References channel, FlutterDesktopPluginRegistrar::engine, and FlutterDesktopEngineState::message_dispatcher.
| FlutterDesktopMessengerRef FlutterDesktopPluginRegistrarGetMessenger | ( | FlutterDesktopPluginRegistrarRef | registrar | ) |
Definition at line 1104 of file flutter_glfw.cc.
References FlutterDesktopPluginRegistrar::engine, and FlutterDesktopEngineState::messenger.
| FlutterDesktopWindowRef FlutterDesktopPluginRegistrarGetWindow | ( | FlutterDesktopPluginRegistrarRef | registrar | ) |
Definition at line 1115 of file flutter_glfw.cc.
References FlutterDesktopPluginRegistrar::engine, FlutterDesktopEngineState::window_controller, and FlutterDesktopWindowControllerState::window_wrapper.
| void FlutterDesktopPluginRegistrarSetDestructionHandler | ( | FlutterDesktopPluginRegistrarRef | registrar, |
| FlutterDesktopOnPluginRegistrarDestroyed | callback | ||
| ) |
Definition at line 1109 of file flutter_glfw.cc.
References callback, and FlutterDesktopPluginRegistrar::destruction_handler.
| FlutterDesktopTextureRegistrarRef FlutterDesktopRegistrarGetTextureRegistrar | ( | FlutterDesktopPluginRegistrarRef | registrar | ) |
Definition at line 1186 of file flutter_glfw.cc.
| FlutterDesktopEngineRef FlutterDesktopRunEngine | ( | const FlutterDesktopEngineProperties & | properties | ) |
Definition at line 1061 of file flutter_glfw.cc.
| void FlutterDesktopRunEngineEventLoopWithTimeout | ( | FlutterDesktopEngineRef | engine, |
| uint32_t | timeout_milliseconds | ||
| ) |
Definition at line 1082 of file flutter_glfw.cc.
References engine.
Referenced by FlutterDesktopRunWindowEventLoopWithTimeout().
| bool FlutterDesktopRunWindowEventLoopWithTimeout | ( | FlutterDesktopWindowControllerRef | controller, |
| uint32_t | timeout_milliseconds | ||
| ) |
Definition at line 1031 of file flutter_glfw.cc.
References FlutterDesktopWindowControllerState::engine, FlutterDesktopRunEngineEventLoopWithTimeout(), and FlutterDesktopWindowControllerState::window.
| bool FlutterDesktopShutDownEngine | ( | FlutterDesktopEngineRef | engine | ) |
Definition at line 1092 of file flutter_glfw.cc.
References engine, FlutterEngineShutdown(), and kSuccess.
| void FlutterDesktopTerminate | ( | ) |
Definition at line 856 of file flutter_glfw.cc.
| bool FlutterDesktopTextureRegistrarMarkExternalTextureFrameAvailable | ( | FlutterDesktopTextureRegistrarRef | texture_registrar, |
| int64_t | texture_id | ||
| ) |
Definition at line 1207 of file flutter_glfw.cc.
| int64_t FlutterDesktopTextureRegistrarRegisterExternalTexture | ( | FlutterDesktopTextureRegistrarRef | texture_registrar, |
| const FlutterDesktopTextureInfo * | texture_info | ||
| ) |
Definition at line 1192 of file flutter_glfw.cc.
| void FlutterDesktopTextureRegistrarUnregisterExternalTexture | ( | FlutterDesktopTextureRegistrarRef | texture_registrar, |
| int64_t | texture_id, | ||
| void(*)(void *user_data) | callback, | ||
| void * | user_data | ||
| ) |
Definition at line 1199 of file flutter_glfw.cc.
| void FlutterDesktopWindowGetFrame | ( | FlutterDesktopWindowRef | flutter_window, |
| int * | x, | ||
| int * | y, | ||
| int * | width, | ||
| int * | height | ||
| ) |
Definition at line 964 of file flutter_glfw.cc.
References height, width, FlutterDesktopWindow::window, x, and y.
| double FlutterDesktopWindowGetScaleFactor | ( | FlutterDesktopWindowRef | flutter_window | ) |
Definition at line 1005 of file flutter_glfw.cc.
References FlutterDesktopWindow::pixels_per_screen_coordinate.
| void FlutterDesktopWindowSetFrame | ( | FlutterDesktopWindowRef | flutter_window, |
| int | x, | ||
| int | y, | ||
| int | width, | ||
| int | height | ||
| ) |
Definition at line 990 of file flutter_glfw.cc.
References height, width, FlutterDesktopWindow::window, x, and y.
| void FlutterDesktopWindowSetHoverEnabled | ( | FlutterDesktopWindowRef | flutter_window, |
| bool | enabled | ||
| ) |
Definition at line 944 of file flutter_glfw.cc.
References FlutterDesktopWindow::hover_tracking_enabled, SetHoverCallbacksEnabled(), and FlutterDesktopWindow::window.
| void FlutterDesktopWindowSetIcon | ( | FlutterDesktopWindowRef | flutter_window, |
| uint8_t * | pixel_data, | ||
| int | width, | ||
| int | height | ||
| ) |
Definition at line 956 of file flutter_glfw.cc.
References height, image, width, and FlutterDesktopWindow::window.
| void FlutterDesktopWindowSetPixelRatioOverride | ( | FlutterDesktopWindowRef | flutter_window, |
| double | pixel_ratio | ||
| ) |
Definition at line 1010 of file flutter_glfw.cc.
References GetWindowController(), FlutterDesktopWindow::pixel_ratio_override, SendWindowMetrics(), and FlutterDesktopWindow::window.
| void FlutterDesktopWindowSetSizeLimits | ( | FlutterDesktopWindowRef | flutter_window, |
| FlutterDesktopSize | minimum_size, | ||
| FlutterDesktopSize | maximum_size | ||
| ) |
Definition at line 1023 of file flutter_glfw.cc.
References FlutterDesktopSize::height, FlutterDesktopSize::width, and FlutterDesktopWindow::window.
| void FlutterDesktopWindowSetTitle | ( | FlutterDesktopWindowRef | flutter_window, |
| const char * | title | ||
| ) |
Definition at line 950 of file flutter_glfw.cc.
References window, and FlutterDesktopWindow::window.
|
static |
Definition at line 266 of file flutter_glfw.cc.
References kDpPerInch.
|
static |
Definition at line 230 of file flutter_glfw.cc.
References window.
Referenced by FlutterDesktopWindowSetPixelRatioOverride(), GLFWAssignEventCallbacks(), GLFWCharCallback(), GLFWCursorPositionCallback(), GLFWFramebufferSizeCallback(), GLFWKeyCallback(), GLFWMouseButtonCallback(), GLFWScrollCallback(), GLFWWindowRefreshCallback(), SendPointerEventWithData(), and SetEventPhaseFromCursorButtonState().
|
static |
Definition at line 545 of file flutter_glfw.cc.
References GetWindowController(), GLFWCharCallback(), GLFWKeyCallback(), GLFWMouseButtonCallback(), GLFWScrollCallback(), SetHoverCallbacksEnabled(), and window.
Referenced by EngineOnFlutterPlatformMessage().
|
static |
Definition at line 517 of file flutter_glfw.cc.
References GetWindowController(), handler, FlutterDesktopWindowControllerState::keyboard_hook_handlers, and window.
Referenced by GLFWAssignEventCallbacks().
|
static |
Definition at line 664 of file flutter_glfw.cc.
References window.
Referenced by FlutterDesktopCreateWindow().
|
static |
Definition at line 557 of file flutter_glfw.cc.
References SetHoverCallbacksEnabled(), and window.
Referenced by EngineOnFlutterPlatformMessage().
|
static |
Definition at line 440 of file flutter_glfw.cc.
References kAdd, kRemove, FlutterPointerEvent::phase, SendPointerEventWithData(), SetEventLocationFromCursorPosition(), and window.
Referenced by GLFWMouseButtonCallback(), and SetHoverCallbacksEnabled().
|
static |
Definition at line 449 of file flutter_glfw.cc.
References GetWindowController(), SendPointerEventWithData(), SetEventPhaseFromCursorButtonState(), window, x, FlutterPointerEvent::x, and y.
Referenced by GLFWMouseButtonCallback(), and SetHoverCallbacksEnabled().
|
static |
Definition at line 674 of file flutter_glfw.cc.
Referenced by FlutterDesktopInit().
|
static |
Definition at line 328 of file flutter_glfw.cc.
References GetWindowController(), SendWindowMetrics(), width, and window.
|
static |
Definition at line 525 of file flutter_glfw.cc.
References action, GetWindowController(), handler, key, FlutterDesktopWindowControllerState::keyboard_hook_handlers, scancode, and window.
Referenced by GLFWAssignEventCallbacks().
|
static |
Definition at line 459 of file flutter_glfw.cc.
References action, GetWindowController(), GLFWCursorEnterCallback(), GLFWCursorPositionCallback(), key, kFlutterPointerButtonMousePrimary, kFlutterPointerButtonMouseSecondary, SendPointerEventWithData(), SetEventLocationFromCursorPosition(), SetEventPhaseFromCursorButtonState(), window, and FlutterDesktopWindowControllerState::window_wrapper.
Referenced by GLFWAssignEventCallbacks().
|
static |
Definition at line 500 of file flutter_glfw.cc.
References GetWindowController(), kFlutterPointerSignalKindScroll, SendPointerEventWithData(), SetEventLocationFromCursorPosition(), SetEventPhaseFromCursorButtonState(), and window.
Referenced by GLFWAssignEventCallbacks().
| void GLFWWindowRefreshCallback | ( | GLFWwindow * | window | ) |
Definition at line 342 of file flutter_glfw.cc.
References GetWindowController(), SendWindowMetrics(), and window.
| UniqueAotDataPtr LoadAotData | ( | const std::filesystem::path & | aot_data_path | ) |
Definition at line 680 of file flutter_glfw.cc.
References data, FlutterEngineAOTDataSource::elf_path, FlutterEngineCreateAOTData(), kFlutterEngineAOTDataSourceTypeElfPath, kSuccess, and FlutterEngineAOTDataSource::type.
Referenced by RunFlutterEngine().
|
static |
Definition at line 712 of file flutter_glfw.cc.
References FlutterDesktopEngineState::aot_data, FlutterDesktopEngineProperties::aot_library_path, args, argv, FlutterDesktopEngineProperties::assets_path, FlutterOpenGLRendererConfig::clear_current, ConfigurePlatformTaskRunner(), engine, EngineClearContext(), EngineGetActiveFbo(), EngineMakeContextCurrent(), EngineMakeResourceContextCurrent(), EngineOnFlutterPlatformMessage(), EnginePresent(), EngineProcResolver(), FlutterDesktopEngineState::event_loop, FlutterOpenGLRendererConfig::fbo_callback, FLUTTER_API_SYMBOL, FLUTTER_ENGINE_VERSION, FlutterEngineRun(), FlutterEngineRunsAOTCompiledDartCode(), flutter::GetExecutableDirectory(), FlutterOpenGLRendererConfig::gl_proc_resolver, FlutterDesktopEngineProperties::icu_data_path, kOpenGL, kSuccess, LoadAotData(), FlutterOpenGLRendererConfig::make_current, FlutterOpenGLRendererConfig::make_resource_current, FlutterRendererConfig::open_gl, FlutterCustomTaskRunners::platform_task_runner, FlutterOpenGLRendererConfig::present, FlutterOpenGLRendererConfig::struct_size, FlutterCustomTaskRunners::struct_size, FlutterProjectArgs::struct_size, FlutterDesktopEngineProperties::switches, FlutterDesktopEngineProperties::switches_count, FlutterRendererConfig::type, and FlutterDesktopEngineState::window_controller.
|
static |
Definition at line 361 of file flutter_glfw.cc.
References FlutterEngineSendPointerEvent(), GetWindowController(), kAdd, kDown, flutter::kFlutterImplicitViewId, kFlutterPointerDeviceKindMouse, kRemove, kUp, FlutterPointerEvent::phase, SendPointerEventWithData(), FlutterPointerEvent::struct_size, window, FlutterPointerEvent::x, and FlutterPointerEvent::y.
Referenced by GLFWCursorEnterCallback(), GLFWCursorPositionCallback(), GLFWMouseButtonCallback(), GLFWScrollCallback(), and SendPointerEventWithData().
|
static |
Definition at line 283 of file flutter_glfw.cc.
References FlutterDesktopWindowControllerState::engine, FlutterEngineSendWindowMetricsEvent(), height, kDpPerInch, flutter::kFlutterImplicitViewId, FlutterDesktopWindowControllerState::monitor_screen_coordinates_per_inch, FlutterWindowMetricsEvent::struct_size, width, and FlutterDesktopWindowControllerState::window_wrapper.
Referenced by FlutterDesktopWindowSetPixelRatioOverride(), GLFWFramebufferSizeCallback(), and GLFWWindowRefreshCallback().
|
static |
Definition at line 417 of file flutter_glfw.cc.
References window, FlutterPointerEvent::x, and FlutterPointerEvent::y.
Referenced by GLFWCursorEnterCallback(), GLFWMouseButtonCallback(), and GLFWScrollCallback().
|
static |
Definition at line 427 of file flutter_glfw.cc.
References GetWindowController(), kDown, kHover, kMove, kUp, FlutterPointerEvent::phase, and window.
Referenced by GLFWCursorPositionCallback(), GLFWMouseButtonCallback(), and GLFWScrollCallback().
|
static |
Definition at line 537 of file flutter_glfw.cc.
References GLFWCursorEnterCallback(), GLFWCursorPositionCallback(), and window.
Referenced by FlutterDesktopWindowSetHoverEnabled(), GLFWAssignEventCallbacks(), and GLFWClearEventCallbacks().
|
static |
Definition at line 826 of file flutter_glfw.cc.
References FlutterDesktopMessengerAddRef(), FlutterDesktopMessengerRelease(), FlutterDesktopEngineState::internal_plugin_registrar, FlutterDesktopEngineState::message_dispatcher, FlutterDesktopEngineState::messenger, FlutterDesktopEngineState::platform_handler, FlutterDesktopEngineState::plugin_registrar, SetUpLocales(), and window.
|
static |
Definition at line 802 of file flutter_glfw.cc.
References flutter::ConvertToFlutterLocale(), FlutterEngineUpdateLocales(), flutter::GetPreferredLanguageInfo(), and kSuccess.
Referenced by SetUpCommonEngineState().
|
staticconstexpr |
Definition at line 46 of file flutter_glfw.cc.
Referenced by GetScreenCoordinatesPerInch(), and SendWindowMetrics().
| const int kFlutterDesktopDontCare = GLFW_DONT_CARE |
Definition at line 44 of file flutter_glfw.cc.