gl: Scale gl:viewport's dimensions per gdk_window_get_scale_factor.
authorMatt Birkholz <matt@birchwood-abbey.net>
Thu, 7 Jun 2018 21:06:13 +0000 (14:06 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Thu, 7 Jun 2018 21:06:13 +0000 (14:06 -0700)
src/gl/gl-glx.scm

index 0b3e70d4136c30e19e1f8dcb8db8df7fbde6259b..11de2df1499f39915e40c5861261735edcdcfc7f 100644 (file)
@@ -231,10 +231,12 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
 (define-method fix-widget-new-geometry-callback ((widget <glx-viewport>))
   (call-next-method widget)
-  (if (glx-widget-xwindow widget)
-      (let ((geometry (fix-widget-geometry widget)))
-       (let ((w (fix-rect-width geometry))
-             (h (fix-rect-height geometry)))
+  (let ((xwindow (glx-widget-xwindow widget)))
+    (if xwindow
+       (let ((geometry (fix-widget-geometry widget))
+             (scale (C-call "gdk_window_get_scale_factor" xwindow)))
+       (let ((w (fix:* scale (fix-rect-width geometry)))
+             (h (fix:* scale (fix-rect-height geometry))))
          (let ((aspect (->flonum (/ w h))))
            (with-glx-widget widget
              (lambda ()
@@ -244,7 +246,7 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
                (glu:perspective (glx-viewport-fovy widget)
                                 aspect
                                 (glx-viewport-near widget)
-                                (glx-viewport-far widget)))))))))
+                                (glx-viewport-far widget))))))))))
 
 (define (draw-callback widget cr)
   (declare (ignore cr))