Browse Source

Added fallback for X11 monitor size.

Camilla Berglund 13 years ago
parent
commit
a2dab25b06
1 changed files with 15 additions and 1 deletions
  1. 15 1
      src/x11_monitor.c

+ 15 - 1
src/x11_monitor.c

@@ -454,6 +454,7 @@ _GLFWmonitor** _glfwPlatformGetMonitors(int* count)
         {
         {
             XRROutputInfo* oi;
             XRROutputInfo* oi;
             XRRCrtcInfo* ci;
             XRRCrtcInfo* ci;
+            int physicalWidth, physicalHeight;
 
 
             oi = XRRGetOutputInfo(_glfwLibrary.X11.display, sr, sr->outputs[i]);
             oi = XRRGetOutputInfo(_glfwLibrary.X11.display, sr, sr->outputs[i]);
             if (oi->connection != RR_Connected)
             if (oi->connection != RR_Connected)
@@ -462,11 +463,24 @@ _GLFWmonitor** _glfwPlatformGetMonitors(int* count)
                 continue;
                 continue;
             }
             }
 
 
+            if (oi->mm_width && oi->mm_height)
+            {
+                physicalWidth = oi->mm_width;
+                physicalHeight = oi->mm_height;
+            }
+            else
+            {
+                physicalWidth = DisplayWidthMM(_glfwLibrary.X11.display,
+                                               _glfwLibrary.X11.screen);
+                physicalHeight = DisplayHeightMM(_glfwLibrary.X11.display,
+                                                 _glfwLibrary.X11.screen);
+            }
+
             ci = XRRGetCrtcInfo(_glfwLibrary.X11.display, sr, oi->crtc);
             ci = XRRGetCrtcInfo(_glfwLibrary.X11.display, sr, oi->crtc);
 
 
             monitors[found] = _glfwCreateMonitor(oi->name,
             monitors[found] = _glfwCreateMonitor(oi->name,
                                                  i == 0,
                                                  i == 0,
-                                                 oi->mm_width, oi->mm_height,
+                                                 physicalWidth, physicalHeight,
                                                  ci->x, ci->y);
                                                  ci->x, ci->y);
 
 
             XRRFreeCrtcInfo(ci);
             XRRFreeCrtcInfo(ci);