debian/changelog                            |   21 ++++++---
 debian/patches/164_trap-aspect-ratios.patch |   61 ++++++++++++++++++++++++++++
 debian/patches/series                       |    1 
 3 files changed, 76 insertions(+), 7 deletions(-)

New commits:
commit a843dab22a2c511f580c2822b2e77847bf4dbff0
Author: Bryce Harrington <br...@bryceharrington.org>
Date:   Wed Mar 18 20:36:51 2009 -0700

    Fix large font issue with monitors that mix up physical size and aspect
    ratio.

diff --git a/debian/changelog b/debian/changelog
index 616cb6b..1894f40 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,12 +1,19 @@
 xorg-server (2:1.6.0-0ubuntu2) UNRELEASED; urgency=low
 
-  * Add thinko_in_xf86targetpreferred.patch: For monitors that do not
-    define a "preferred" mode, if the monitor is not connected to the
-    first output, X wouldn't pick up the mode correctly, resulting in a
-    "No modes" error in Xorg.0.log and dropping user to failsafe-X mode.
-    (LP: #335214)
-
- -- Bryce Harrington <br...@ubuntu.com>  Wed, 18 Mar 2009 20:27:09 -0700
+  * Add 163_thinko_in_xf86targetpreferred.patch:
+    - For monitors that do not define a "preferred" mode, if the monitor
+      is not connected to the first output, X wouldn't pick up the mode
+      correctly, resulting in a "No modes" error in Xorg.0.log and dropping
+      user to failsafe-X mode.
+      (LP: #335214)
+  * Add 164_trap-aspect-ratios.patch: 
+    - Some monitors fib in the EDID they provide, giving their physical
+      dimensions in the global block, and their aspect ratio(!) in
+      the detailed timings.  This totally messes up DPI calculations
+      resulting in huge fonts.
+      (LP: #320930)
+
+ -- Bryce Harrington <br...@ubuntu.com>  Wed, 18 Mar 2009 20:31:44 -0700
 
 xorg-server (2:1.6.0-0ubuntu1) jaunty; urgency=low
 
diff --git a/debian/patches/164_trap-aspect-ratios.patch 
b/debian/patches/164_trap-aspect-ratios.patch
new file mode 100644
index 0000000..aa6d5c2
--- /dev/null
+++ b/debian/patches/164_trap-aspect-ratios.patch
@@ -0,0 +1,61 @@
+diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
+index c0e3df9..32288f7 100644
+--- a/hw/xfree86/ddc/interpret_edid.c
++++ b/hw/xfree86/ddc/interpret_edid.c
+@@ -51,6 +51,15 @@ static void get_whitepoint_section(Uchar *, struct 
whitePoints *);
+ static void get_detailed_timing_section(Uchar*, struct        
detailed_timings *);
+ static Bool validate_version(int scrnIndex, struct edid_version *);
+ 
++static Bool
++is_standard_aspect_ratio(int x, int y)
++{
++    return ((x == 16 && y == 9) ||
++          (x == 16 && y == 10) ||
++          (x == 4 && y == 3) ||
++          (x == 5 && y == 4));
++}
++
+ static void
+ handle_edid_quirks(xf86MonPtr m)
+ {
+@@ -91,10 +100,7 @@ handle_edid_quirks(xf86MonPtr m)
+      * try to find the largest detailed timing that matches that aspect
+      * ratio and use that to fill in the feature section.
+      */
+-    if ((m->features.hsize == 16 && m->features.vsize == 9) ||
+-      (m->features.hsize == 16 && m->features.vsize == 10) ||
+-      (m->features.hsize == 4 && m->features.vsize == 3) ||
+-      (m->features.hsize == 5 && m->features.vsize == 4)) {
++    if (is_standard_aspect_ratio(m->features.hsize, m->features.vsize)) {
+       int real_hsize = 0, real_vsize = 0;
+       float target_aspect, timing_aspect;
+       
+@@ -130,6 +136,28 @@ handle_edid_quirks(xf86MonPtr m)
+       xf86Msg(X_INFO, "Quirked EDID physical size to %dx%d cm\n",
+               m->features.hsize, m->features.vsize);
+     }
++
++    /*
++     * Some monitors do the reverse, putting real size in the global block
++     * and aspect ratios in the detailed timings.  Check, but only if we
++     * think we've got a real physical size.
++     */
++    if (m->features.hsize && m->features.vsize) {
++        for (i = 0; i < 4; i++) {
++          if (m->det_mon[i].type == DT) {
++              struct detailed_timings *timing;
++              timing = &m->det_mon[i].section.d_timings;
++
++              if (is_standard_aspect_ratio(timing->h_size, timing->v_size)) {
++                    timing->h_size = m->features.hsize * 10;
++                    timing->v_size = m->features.vsize * 10;
++                  xf86Msg(X_INFO, "Quirked timing size to %dx%d mm\n",
++                          timing->h_size, timing->v_size);
++
++                }
++          }
++        }
++    }
+ }
+ 
+ xf86MonPtr
diff --git a/debian/patches/series b/debian/patches/series
index 619449b..4540029 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -20,3 +20,4 @@
 162_null_crtc_in_rotation.patch
 999_default_modedebug_on.patch
 163_thinko_in_xf86targetpreferred.patch
+164_trap-aspect-ratios.patch


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to