[arch-commits] Commit in xorg-server/trunk (2 files)
Andreas Radke
andyrtr at gemini.archlinux.org
Wed Nov 10 20:37:59 UTC 2021
Date: Wednesday, November 10, 2021 @ 20:37:59
Author: andyrtr
Revision: 427869
upgpkg: xorg-server 21.1.1-3: revert dpi calculation changes that leads to more issues than it fixes - FS#72661
Added:
xorg-server/trunk/0001_revert_dpi_calculation.patch
Modified:
xorg-server/trunk/PKGBUILD
-----------------------------------+
0001_revert_dpi_calculation.patch | 118 ++++++++++++++++++++++++++++++++++++
PKGBUILD | 12 ++-
2 files changed, 127 insertions(+), 3 deletions(-)
Added: 0001_revert_dpi_calculation.patch
===================================================================
--- 0001_revert_dpi_calculation.patch (rev 0)
+++ 0001_revert_dpi_calculation.patch 2021-11-10 20:37:59 UTC (rev 427869)
@@ -0,0 +1,118 @@
+diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
+index 0389945a7cf0e18545cbe101639b62cd01f1e276..d03382d263399bba67dc77f6525480f751674bcc 100644
+--- a/hw/xfree86/common/xf86Helper.c
++++ b/hw/xfree86/common/xf86Helper.c
+@@ -55,6 +55,7 @@
+ #include "xf86Xinput.h"
+ #include "xf86InPriv.h"
+ #include "mivalidate.h"
++#include "xf86Crtc.h"
+
+ /* For xf86GetClocks */
+ #if defined(CSRG_BASED) || defined(__GNU__)
+@@ -851,8 +852,9 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
+ {
+ MessageType from = X_DEFAULT;
+ xf86MonPtr DDC = (xf86MonPtr) (pScrn->monitor->DDC);
+- int ddcWidthmm, ddcHeightmm;
++ int probedWidthmm, probedHeightmm;
+ int widthErr, heightErr;
++ xf86OutputPtr compat = xf86CompatOutput(pScrn);
+
+ /* XXX Maybe there is no need for widthmm/heightmm in ScrnInfoRec */
+ pScrn->widthmm = pScrn->monitor->widthmm;
+@@ -862,11 +864,15 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
+ /* DDC gives display size in mm for individual modes,
+ * but cm for monitor
+ */
+- ddcWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */
+- ddcHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */
++ probedWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */
++ probedHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */
++ }
++ else if (compat && compat->mm_width > 0 && compat->mm_height > 0) {
++ probedWidthmm = compat->mm_width;
++ probedHeightmm = compat->mm_height;
+ }
+ else {
+- ddcWidthmm = ddcHeightmm = 0;
++ probedWidthmm = probedHeightmm = 0;
+ }
+
+ if (monitorResolution > 0) {
+@@ -892,15 +898,15 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
+ pScrn->widthmm, pScrn->heightmm);
+
+ /* Warn if config and probe disagree about display size */
+- if (ddcWidthmm && ddcHeightmm) {
++ if (probedWidthmm && probedHeightmm) {
+ if (pScrn->widthmm > 0) {
+- widthErr = abs(ddcWidthmm - pScrn->widthmm);
++ widthErr = abs(probedWidthmm - pScrn->widthmm);
+ }
+ else {
+ widthErr = 0;
+ }
+ if (pScrn->heightmm > 0) {
+- heightErr = abs(ddcHeightmm - pScrn->heightmm);
++ heightErr = abs(probedHeightmm - pScrn->heightmm);
+ }
+ else {
+ heightErr = 0;
+@@ -909,17 +915,17 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y)
+ /* Should include config file name for monitor here */
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Probed monitor is %dx%d mm, using Displaysize %dx%d mm\n",
+- ddcWidthmm, ddcHeightmm, pScrn->widthmm,
++ probedWidthmm, probedHeightmm, pScrn->widthmm,
+ pScrn->heightmm);
+ }
+ }
+ }
+- else if (ddcWidthmm && ddcHeightmm) {
++ else if (probedWidthmm && probedHeightmm) {
+ from = X_PROBED;
+ xf86DrvMsg(pScrn->scrnIndex, from, "Display dimensions: (%d, %d) mm\n",
+- ddcWidthmm, ddcHeightmm);
+- pScrn->widthmm = ddcWidthmm;
+- pScrn->heightmm = ddcHeightmm;
++ probedWidthmm, probedHeightmm);
++ pScrn->widthmm = probedWidthmm;
++ pScrn->heightmm = probedHeightmm;
+ if (pScrn->widthmm > 0) {
+ pScrn->xDpi =
+ (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm);
+diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
+index c6e89e66f690cd7e2a26a3d4b663f9f146cd84e0..202791774b31d6c349f27ed692c1b4ea7f1fdca4 100644
+--- a/hw/xfree86/modes/xf86Crtc.c
++++ b/hw/xfree86/modes/xf86Crtc.c
+@@ -3256,8 +3256,10 @@ xf86OutputSetEDID(xf86OutputPtr output, xf86MonPtr edid_mon)
+ free(output->MonInfo);
+
+ output->MonInfo = edid_mon;
+- output->mm_width = 0;
+- output->mm_height = 0;
++ if (edid_mon) {
++ output->mm_width = 0;
++ output->mm_height = 0;
++ }
+
+ if (debug_modes) {
+ xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
+diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
+index 50cbd043edc8380a3307dfcd5dee9cb280a50ba9..d4651f4e856f9fbe8b87086405401e4c0989b409 100644
+--- a/hw/xfree86/modes/xf86RandR12.c
++++ b/hw/xfree86/modes/xf86RandR12.c
+@@ -806,6 +806,12 @@ xf86RandR12CreateScreenResources(ScreenPtr pScreen)
+ mmWidth = output->conf_monitor->mon_width;
+ mmHeight = output->conf_monitor->mon_height;
+ }
++ else if (output &&
++ (output->mm_width > 0 &&
++ output->mm_height > 0)) {
++ mmWidth = output->mm_width;
++ mmHeight = output->mm_height;
++ }
+ else {
+ /*
+ * Otherwise, just set the screen to DEFAULT_DPI
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2021-11-10 19:16:18 UTC (rev 427868)
+++ PKGBUILD 2021-11-10 20:37:59 UTC (rev 427869)
@@ -5,7 +5,7 @@
pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xvfb' 'xorg-server-xnest'
'xorg-server-common' 'xorg-server-devel')
pkgver=21.1.1
-pkgrel=2
+pkgrel=3
arch=('x86_64')
license=('custom')
groups=('xorg')
@@ -19,15 +19,21 @@
#source=(${pkgbase}-${pkgver}::git+https://gitlab.freedesktop.org/xorg/xserver.git#commit=27a0ee32ccef8d621aaa758c804fc9a5ceeb5a56
source=(https://xorg.freedesktop.org/releases/individual/xserver/${pkgbase}-${pkgver}.tar.xz{,.sig}
xvfb-run # with updates from FC master
- xvfb-run.1)
+ xvfb-run.1
+ 0001_revert_dpi_calculation.patch)
validpgpkeys=('FD0004A26EADFE43A4C3F249C6F7AE200374452D') # Povilas Kanapickas <povilas at radix.lt>
sha512sums=('8608ed9c1537c95e8a3adea5e3e372a3c5eb841f8e27c84283093f22fb1909e16a800006510da684b13f8f237f33b8a4be3e2537f5f9ab9af4c5ad12770eef0d'
'SKIP'
'4154dd55702b98083b26077bf70c60aa957b4795dbf831bcc4c78b3cb44efe214f0cf8e3c140729c829b5f24e7466a24615ab8dbcce0ac6ebee3229531091514'
- 'de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22')
+ 'de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22'
+ '28021ef9879d5313096c3e7e79a71a2e15be366652845acf32239d5c011c60aa5938c63c23b04bb0dee56df7b3762b7ca8d51d5925898c67c2ba83ec468fe782')
prepare() {
cd "${pkgbase}-${pkgver}"
+ # revert dpi calculation that leads to unwanted miscalculation results
+ # https://gitlab.freedesktop.org/xorg/xserver/-/issues/1241
+ # https://bugs.archlinux.org/task/72661
+ patch -Rp1 -i ../0001_revert_dpi_calculation.patch
}
More information about the arch-commits
mailing list