Explorar o código

Wayland: Move DPI fallback work to output done

This removes the dependency on the (unspecified) ordering of geometry
and mode events in wl_output.

Based on feedback from @linkmauve and @caramelli.

Related to #1792.

(cherry picked from commit b925a54ef11adab250e4e9592afe918c1f8caebb)
Camilla Löwy %!s(int64=4) %!d(string=hai) anos
pai
achega
0c22ebac36
Modificáronse 1 ficheiros con 8 adicións e 0 borrados
  1. 8 0
      src/wl_monitor.c

+ 8 - 0
src/wl_monitor.c

@@ -88,6 +88,14 @@ static void outputHandleDone(void* data, struct wl_output* output)
 {
     struct _GLFWmonitor *monitor = data;
 
+    if (monitor->widthMM <= 0 || monitor->heightMM <= 0)
+    {
+        // If Wayland does not provide a physical size, assume the default 96 DPI
+        const GLFWvidmode* mode = &monitor->modes[monitor->wl.currentMode];
+        monitor->widthMM  = (int) (mode->width * 25.4f / 96.f);
+        monitor->heightMM = (int) (mode->height * 25.4f / 96.f);
+    }
+
     _glfwInputMonitor(monitor, GLFW_CONNECTED, _GLFW_INSERT_LAST);
 }