17struct MonitorEnumState {
25 : engine_(
engine), win32_(
engine->windows_proc_table()) {}
29std::optional<FlutterEngineDisplay> DisplayManagerWin32::FromMonitor(
30 HMONITOR monitor)
const {
31 MONITORINFOEXW monitor_info = {};
32 monitor_info.cbSize =
sizeof(monitor_info);
33 if (win32_->GetMonitorInfoW(monitor, &monitor_info) == 0) {
37 DEVMODEW dev_mode = {};
38 dev_mode.dmSize =
sizeof(dev_mode);
39 if (!win32_->EnumDisplaySettingsW(monitor_info.szDevice,
40 ENUM_CURRENT_SETTINGS, &dev_mode)) {
51 display.
width = monitor_info.rcMonitor.right - monitor_info.rcMonitor.left;
52 display.
height = monitor_info.rcMonitor.bottom - monitor_info.rcMonitor.top;
54 static_cast<double>(dpi) /
static_cast<double>(
kDefaultDpi);
58BOOL CALLBACK DisplayManagerWin32::EnumMonitorCallback(HMONITOR monitor,
62 MonitorEnumState* state =
reinterpret_cast<MonitorEnumState*
>(
data);
64 std::vector<FlutterEngineDisplay>*
displays = state->displays;
65 const std::optional<FlutterEngineDisplay> display =
66 self->FromMonitor(monitor);
88 case WM_DISPLAYCHANGE:
99 if (display.display_id ==
id) {
108 std::vector<FlutterEngineDisplay>
displays;
109 MonitorEnumState state = {
this, &
displays};
110 win32_->EnumDisplayMonitors(
nullptr,
nullptr, EnumMonitorCallback,
111 reinterpret_cast<LPARAM>(&state));
std::optional< FlutterEngineDisplay > FindById(FlutterEngineDisplayId id)
bool HandleWindowMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, LRESULT *result)
DisplayManagerWin32(FlutterWindowsEngine *engine)
std::vector< FlutterEngineDisplay > GetDisplays() const
void UpdateDisplay(const std::vector< FlutterEngineDisplay > &displays)
uint64_t FlutterEngineDisplayId
G_BEGIN_DECLS GBytes * message
UINT GetDpiForMonitor(HMONITOR monitor)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
constexpr UINT kDefaultDpi
size_t height
The height of the display, in physical pixels.
double device_pixel_ratio
size_t struct_size
The size of this struct. Must be sizeof(FlutterEngineDisplay).
size_t width
The width of the display, in physical pixels.
FlutterEngineDisplayId display_id