diff options
author | kyak | 2021-11-12 07:17:42 +0300 |
---|---|---|
committer | kyak | 2021-11-12 07:17:42 +0300 |
commit | 96d784223ddf95b2ac919428cde5aac149275892 (patch) | |
tree | d823ca0ae9de5aaa64c7c2412f1406a65df9dbcc | |
parent | 3d591ee1c6b34780b41852c608d7bfda215a3015 (diff) | |
download | aur-96d784223ddf95b2ac919428cde5aac149275892.tar.gz |
updpkg: xorg-server 21.1.1-3
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | 0001_revert_dpi_calculation.patch | 118 | ||||
-rw-r--r-- | PKGBUILD | 8 |
3 files changed, 128 insertions, 2 deletions
@@ -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 @@ -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" |