summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorkyak2021-11-12 07:17:42 +0300
committerkyak2021-11-12 07:17:42 +0300
commit96d784223ddf95b2ac919428cde5aac149275892 (patch)
treed823ca0ae9de5aaa64c7c2412f1406a65df9dbcc
parent3d591ee1c6b34780b41852c608d7bfda215a3015 (diff)
downloadaur-96d784223ddf95b2ac919428cde5aac149275892.tar.gz
updpkg: xorg-server 21.1.1-3
-rw-r--r--.SRCINFO4
-rw-r--r--0001_revert_dpi_calculation.patch118
-rw-r--r--PKGBUILD8
3 files changed, 128 insertions, 2 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 947ede404774..0b28b0a2394f 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = xorg-server-bug865
pkgver = 21.1.1
- pkgrel = 2
+ pkgrel = 3
url = https://xorg.freedesktop.org
arch = x86_64
groups = xorg
@@ -40,12 +40,14 @@ pkgbase = xorg-server-bug865
source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-21.1.1.tar.xz.sig
source = xvfb-run
source = xvfb-run.1
+ source = 0001_revert_dpi_calculation.patch
source = freedesktop-bug-865.patch
validpgpkeys = FD0004A26EADFE43A4C3F249C6F7AE200374452D
sha512sums = 8608ed9c1537c95e8a3adea5e3e372a3c5eb841f8e27c84283093f22fb1909e16a800006510da684b13f8f237f33b8a4be3e2537f5f9ab9af4c5ad12770eef0d
sha512sums = SKIP
sha512sums = 4154dd55702b98083b26077bf70c60aa957b4795dbf831bcc4c78b3cb44efe214f0cf8e3c140729c829b5f24e7466a24615ab8dbcce0ac6ebee3229531091514
sha512sums = de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22
+ sha512sums = 28021ef9879d5313096c3e7e79a71a2e15be366652845acf32239d5c011c60aa5938c63c23b04bb0dee56df7b3762b7ca8d51d5925898c67c2ba83ec468fe782
sha512sums = 81be7b0ecd9de850f0c740762d37c7489f12b34eb6adb19b3d3077f66d66e48e1206eff4bd29e50f5640509390a08fa138a4664b60d90878d4d17cb1f6919baf
pkgname = xorg-server-bug865
diff --git a/0001_revert_dpi_calculation.patch b/0001_revert_dpi_calculation.patch
new file mode 100644
index 000000000000..20babdfc8291
--- /dev/null
+++ b/0001_revert_dpi_calculation.patch
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 384b2b4bb553..0cd20b13af7e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@ pkgbase=xorg-server-bug865
pkgname=xorg-server-bug865
pkgver=21.1.1
-pkgrel=2
+pkgrel=3
arch=('x86_64')
license=('custom')
groups=('xorg')
@@ -20,16 +20,22 @@ makedepends=('xorgproto' 'pixman' 'libx11' 'mesa' 'mesa-libgl' 'xtrans'
source=(https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-${pkgver}.tar.xz{,.sig}
xvfb-run # with updates from FC master
xvfb-run.1
+ 0001_revert_dpi_calculation.patch
freedesktop-bug-865.patch)
validpgpkeys=('FD0004A26EADFE43A4C3F249C6F7AE200374452D') # Povilas Kanapickas <povilas@radix.lt>
sha512sums=('8608ed9c1537c95e8a3adea5e3e372a3c5eb841f8e27c84283093f22fb1909e16a800006510da684b13f8f237f33b8a4be3e2537f5f9ab9af4c5ad12770eef0d'
'SKIP'
'4154dd55702b98083b26077bf70c60aa957b4795dbf831bcc4c78b3cb44efe214f0cf8e3c140729c829b5f24e7466a24615ab8dbcce0ac6ebee3229531091514'
'de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22'
+ '28021ef9879d5313096c3e7e79a71a2e15be366652845acf32239d5c011c60aa5938c63c23b04bb0dee56df7b3762b7ca8d51d5925898c67c2ba83ec468fe782'
'81be7b0ecd9de850f0c740762d37c7489f12b34eb6adb19b3d3077f66d66e48e1206eff4bd29e50f5640509390a08fa138a4664b60d90878d4d17cb1f6919baf')
prepare() {
cd "xorg-server-${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
# The patch for freedesktop bug 865
patch -Np1 -i "${srcdir}/freedesktop-bug-865.patch"