Backends: GLFW: don't submit monitor with 0 DpiScale (e.g. accessibility virtual monitor?). to prevent assert. (#7902)

This commit is contained in:
Nicolas Noble 2024-08-18 20:23:56 -07:00 committed by ocornut
parent 7b6314f47d
commit fbafc33376
2 changed files with 4 additions and 0 deletions

View File

@ -906,6 +906,8 @@ static void ImGui_ImplGlfw_UpdateMonitors()
// Warning: the validity of monitor DPI information on Windows depends on the application DPI awareness settings, which generally needs to be set in the manifest or at runtime.
float x_scale, y_scale;
glfwGetMonitorContentScale(glfw_monitors[n], &x_scale, &y_scale);
if (x_scale == 0.0f)
continue; // Some accessibility applications are declaring fake monitors with a DPI of 0, see (#7902)
monitor.DpiScale = x_scale;
#endif
monitor.PlatformHandle = (void*)glfw_monitors[n]; // [...] GLFW doc states: "guaranteed to be valid only until the monitor configuration changes"

View File

@ -56,6 +56,8 @@ Docking+Viewports Branch:
- Viewports: added optional platform_io.Platform_GetWindowWorkAreaInsets() hook
to allow backends to alter the default per-viewport work-area. (#7823)
- Backends: don't report monitors with DpiScale of 0, which seemed to be reported
for virtual monitors instead by accessibility drivers. (#7902) [@nicolasnoble]
-----------------------------------------------------------------------