[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'ubuntu'



 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 <bryce@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 <bryce@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 <bryce@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


Reply to: