+++ /dev/null
-From db1abe87be5b4bbe7db906ac3d56c69cf3785b23 Mon Sep 17 00:00:00 2001
-From: Nick Bowler <nbowler@draconx.ca>
-Date: Wed, 6 Jan 2010 10:42:17 -0500
-Subject: [PATCH] xfree86: Add DontLie server flag.
-
-Since commit fff00df94d7ebd18a8e24537ec96073717375a3f, RandR 1.2 drivers
-lie about the resolution of the attached screen by default. When the
-reported resolution is wrong, fonts and other UI elements that use
-physical units are not sized correctly.
-
-This patch adds a new server flag, DontLie, which encourages the server
-to be honest by default.
-
-Signed-off-by: Nick Bowler <nbowler@draconx.ca>
----
- hw/xfree86/common/xf86Config.c | 6 +++++-
- hw/xfree86/common/xf86Globals.c | 1 +
- hw/xfree86/common/xf86Privstr.h | 2 ++
- hw/xfree86/man/xorg.conf.man | 6 ++++++
- hw/xfree86/modes/xf86RandR12.c | 12 ++++++++++++
- 5 files changed, 26 insertions(+), 1 deletions(-)
-
-diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
-index 114bdc3..22391df 100644
---- a/hw/xfree86/common/xf86Config.c
-+++ b/hw/xfree86/common/xf86Config.c
-@@ -690,7 +690,8 @@ typedef enum {
- FLAG_AUTO_ENABLE_DEVICES,
- FLAG_GLX_VISUALS,
- FLAG_DRI2,
-- FLAG_USE_SIGIO
-+ FLAG_USE_SIGIO,
-+ FLAG_DONTLIE
- } FlagValues;
-
- /**
-@@ -752,6 +753,8 @@ static OptionInfoRec FlagOptions[] = {
- {0}, FALSE },
- { FLAG_USE_SIGIO, "UseSIGIO", OPTV_BOOLEAN,
- {0}, FALSE },
-+ { FLAG_DONTLIE, "DontLie", OPTV_BOOLEAN,
-+ {0}, FALSE },
- { -1, NULL, OPTV_NONE,
- {0}, FALSE },
- };
-@@ -809,6 +812,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
- xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
- xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
- xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
-+ xf86GetOptValBool(FlagOptions, FLAG_DONTLIE, &xf86Info.dontLie);
-
- xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
- if (xf86Info.ignoreABI) {
-diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
-index 16d5557..b0f602a 100644
---- a/hw/xfree86/common/xf86Globals.c
-+++ b/hw/xfree86/common/xf86Globals.c
-@@ -105,6 +105,7 @@ xf86InfoRec xf86Info = {
- .dontVTSwitch = FALSE,
- .dontZap = FALSE,
- .dontZoom = FALSE,
-+ .dontLie = FALSE,
- .notrapSignals = FALSE,
- .caughtSignal = FALSE,
- .currentScreen = NULL,
-diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h
-index 608f9bd..d05f206 100644
---- a/hw/xfree86/common/xf86Privstr.h
-+++ b/hw/xfree86/common/xf86Privstr.h
-@@ -68,6 +68,8 @@ typedef struct {
- Bool dontVTSwitch;
- Bool dontZap;
- Bool dontZoom;
-+ Bool dontLie;
-+
- Bool notrapSignals; /* don't exit cleanly - die at fault */
- Bool caughtSignal;
-
-diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
-index f406f82..a9d418c 100644
---- a/hw/xfree86/man/xorg.conf.man
-+++ b/hw/xfree86/man/xorg.conf.man
-@@ -544,6 +544,12 @@ When this option is enabled, those key sequences have no special meaning
- and are passed to clients.
- Default: off.
- .TP 7
-+.BI "Option \*qDontLie\*q \*q" boolean \*q
-+This option suggests that the server should avoid lying whenever possible.
-+Currently this means that RandR 1.2 drivers will try to compute the proper DPI
-+instead of making it up.
-+Default: off.
-+.TP 7
- .BI "Option \*qDisableVidModeExtension\*q \*q" boolean \*q
- This disables the parts of the VidMode extension used by the xvidtune client
- that can be used to change the video modes.
-diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
-index cb20d1c..65da9bf 100644
---- a/hw/xfree86/modes/xf86RandR12.c
-+++ b/hw/xfree86/modes/xf86RandR12.c
-@@ -805,6 +805,7 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen)
- else
- {
- xf86OutputPtr output = xf86CompatOutput(pScrn);
-+ xf86CrtcPtr crtc = output->crtc;
-
- if (output &&
- output->conf_monitor &&
-@@ -817,6 +818,17 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen)
- mmWidth = output->conf_monitor->mon_width;
- mmHeight = output->conf_monitor->mon_height;
- }
-+ else if (xf86Info.dontLie && crtc && crtc->mode.HDisplay &&
-+ output->mm_width && output->mm_height)
-+ {
-+ /*
-+ * If the output has a mode and a declared size, use that
-+ * to scale the screen size
-+ */
-+ DisplayModePtr mode = &crtc->mode;
-+ mmWidth = output->mm_width * width / mode->HDisplay;
-+ mmHeight = output->mm_height * height / mode->VDisplay;
-+ }
- else
- {
- /*
---
-1.7.3.4
-