forked from pool/xorg-x11-server
Accepting request 624084 from X11:XOrg
- u_modesetting-Fix-cirrus-24bpp-breakage.patch * Fix breakage of cirrus 24bpp support on modesetting driver (bsc#1101699) - Remove /var/lib/X11 and its symlink, it is no longer needed and doesn't work with transaction-updates (FATE#325524). - Move README.compiled to another location and use tmpfiles to copy it at runtime. - U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch * fixes rotation in modesetting driver (regression with xorg-server 1.20.0, fdo#106715) * might also fix boo#1099812 ... - U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch * Fix heap overflow caused by unexpected optimization, which was possible because of relying on undefined behavior. (boo#1099113) - U_Xext-shm-Refuse-to-work-for-remote-clients.patch * Avoid access to System V shared memory segment on the X server side for clients forwarded via SSH. Also prevent them from hanging while waiting for the reply from the ShmCreateSegment request. (boo#1097227) - Remove n_add-dummy-xf86DisableRandR.patch * After upgrade to 1.20.0 the API officially no longer includes xf86DisableRandR, so there is no need to add it back. - Update to version 1.20.0: New features: + RANDR 1.6, which enables leasing RANDR resources to a client for its exclusive use (e.g. head mounted displays) + Depth 30 support in glamor and the modesetting driver + A meson-based build system, parallel to autotools + Pageflipping support for PRIME output sinks + OutputClass device matching for xorg.conf + Input grab and tablet support in Xwayland - Remove upstream patches: + u_xorg-x11-server-reproducible.patch Solved slightly different + u_os-inputthread-Force-unlock-when-stopping-thread.patch + u_xfree86-add-default-modes-for-16-9-and-16-10.patch + U_xwayland-Don-t-process-cursor-warping-without-an-xwl.patch + U_xwayland-Give-up-cleanly-on-Wayland-socket-errors.patch + U_xwayland-avoid-race-condition-on-new-keymap.patch + U_xwayland-remove-dirty-window-unconditionally-on-unre.patch + U_0001-animcur-Use-fixed-size-screen-private.patch + U_0002-animcur-Return-the-next-interval-directly-from-the-t.patch + U_0003-animcur-Run-the-timer-from-the-device-not-the-screen.patch + U_0004-animcur-Fix-transitions-between-animated-cursors.patch + U_xfree86-Remove-broken-RANDR-disabling-logic-v4.patch - Adapt patches to work with the new release: + N_zap_warning_xserver.diff + N_fix_fglrx_screendepth_issue.patch + n_xserver-optimus-autoconfig-hack.patch + u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch + u_xorg-wrapper-build-Build-position-independent-code.patch OBS-URL: https://build.opensuse.org/request/show/624084 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=359
This commit is contained in:
commit
c38be27738
@ -23,15 +23,18 @@ Index: hw/xfree86/common/xf86AutoConfig.c
|
||||
#define BUILTIN_LAYOUT_SECTION_PRE \
|
||||
"Section \"ServerLayout\"\n" \
|
||||
"\tIdentifier\t\"Builtin Default Layout\"\n"
|
||||
@@ -153,7 +160,10 @@ xf86AutoConfig(void)
|
||||
for (p = deviceList; *p; p++) {
|
||||
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p);
|
||||
@@ -187,8 +187,12 @@ xf86AutoConfig(void)
|
||||
snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION,
|
||||
md.matches[i], 0, md.matches[i]);
|
||||
AppendToConfig(buf);
|
||||
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
|
||||
+ if( strcmp(*p, "fglrx") == 0 )
|
||||
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_FOR_FGLRX, *p, 0, *p, 0);
|
||||
- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
|
||||
- md.matches[i], 0, md.matches[i], 0);
|
||||
+ if (strcmp(md.matches[i], "fglrx") == 0)
|
||||
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_FOR_FGLRX,
|
||||
+ md.matches[i], 0, md.matches[i], 0);
|
||||
+ else
|
||||
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0);
|
||||
+ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION,
|
||||
+ md.matches[i], 0, md.matches[i], 0);
|
||||
AppendToConfig(buf);
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ Index: xorg-server-1.12.1/hw/xfree86/common/xf86Globals.c
|
||||
+ .ZapWarning = TRUE,
|
||||
.dontZoom = FALSE,
|
||||
.notrapSignals = FALSE,
|
||||
.caughtSignal = FALSE,
|
||||
.currentScreen = NULL,
|
||||
Index: xorg-server-1.12.1/hw/xfree86/common/xf86Privstr.h
|
||||
===================================================================
|
||||
--- xorg-server-1.12.1.orig/hw/xfree86/common/xf86Privstr.h
|
||||
@ -95,4 +95,4 @@ Index: xorg-server-1.12.1/hw/xfree86/common/xf86Privstr.h
|
||||
+ Bool ZapWarning;
|
||||
Bool dontZoom;
|
||||
Bool notrapSignals; /* don't exit cleanly - die at fault */
|
||||
Bool caughtSignal;
|
||||
|
||||
|
@ -1,71 +0,0 @@
|
||||
From 26841b2c9ea03fda8b2d0da254e0344fd2a3afce Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 26 Oct 2017 13:40:57 -0400
|
||||
Subject: [PATCH] animcur: Use fixed-size screen private
|
||||
|
||||
Reviewed-by: Robert Morell <rmorell@nvidia.com>
|
||||
Tested-by: Robert Morell <rmorell@nvidia.com>
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
(cherry picked from commit 3abbdb7318018584a27220737bd92081ce8ee67c)
|
||||
---
|
||||
render/animcur.c | 16 ++++------------
|
||||
1 file changed, 4 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/render/animcur.c b/render/animcur.c
|
||||
index 52e6b8b79..3f85f9a4f 100644
|
||||
--- a/render/animcur.c
|
||||
+++ b/render/animcur.c
|
||||
@@ -77,12 +77,9 @@ static CursorBits animCursorBits = {
|
||||
|
||||
static DevPrivateKeyRec AnimCurScreenPrivateKeyRec;
|
||||
|
||||
-#define AnimCurScreenPrivateKey (&AnimCurScreenPrivateKeyRec)
|
||||
-
|
||||
#define IsAnimCur(c) ((c) && ((c)->bits == &animCursorBits))
|
||||
#define GetAnimCur(c) ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE))))
|
||||
-#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey))
|
||||
-#define SetAnimCurScreen(s,p) dixSetPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey, p)
|
||||
+#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, &AnimCurScreenPrivateKeyRec))
|
||||
|
||||
#define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
|
||||
#define Unwrap(as,s,elt) ((s)->elt = (as)->elt)
|
||||
@@ -101,9 +98,7 @@ AnimCurCloseScreen(ScreenPtr pScreen)
|
||||
Unwrap(as, pScreen, RealizeCursor);
|
||||
Unwrap(as, pScreen, UnrealizeCursor);
|
||||
Unwrap(as, pScreen, RecolorCursor);
|
||||
- SetAnimCurScreen(pScreen, 0);
|
||||
ret = (*pScreen->CloseScreen) (pScreen);
|
||||
- free(as);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -308,15 +303,13 @@ AnimCurInit(ScreenPtr pScreen)
|
||||
{
|
||||
AnimCurScreenPtr as;
|
||||
|
||||
- if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
|
||||
+ if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN,
|
||||
+ sizeof(AnimCurScreenRec)))
|
||||
return FALSE;
|
||||
|
||||
- as = (AnimCurScreenPtr) malloc(sizeof(AnimCurScreenRec));
|
||||
- if (!as)
|
||||
- return FALSE;
|
||||
+ as = GetAnimCurScreen(pScreen);
|
||||
as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
|
||||
if (!as->timer) {
|
||||
- free(as);
|
||||
return FALSE;
|
||||
}
|
||||
as->timer_set = FALSE;
|
||||
@@ -329,7 +322,6 @@ AnimCurInit(ScreenPtr pScreen)
|
||||
Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor);
|
||||
Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor);
|
||||
Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor);
|
||||
- SetAnimCurScreen(pScreen, as);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
@ -1,38 +0,0 @@
|
||||
From 354c48304d27f75b7c33c03a0adb050c37788ccf Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 26 Oct 2017 13:53:06 -0400
|
||||
Subject: [PATCH] animcur: Return the next interval directly from the timer
|
||||
callback
|
||||
|
||||
If the return value is non-zero here, DoTimer() will automatically rearm
|
||||
the timer for the new (relative) delay. 'soonest' is in absolute time,
|
||||
so subtract off 'now' and return that.
|
||||
|
||||
Reviewed-by: Robert Morell <rmorell@nvidia.com>
|
||||
Tested-by: Robert Morell <rmorell@nvidia.com>
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
(cherry picked from commit cc3241a712684f8c7147f5688e9ee3ecb5a93b87)
|
||||
---
|
||||
render/animcur.c | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/render/animcur.c b/render/animcur.c
|
||||
index 3f85f9a4f..26a6026ae 100644
|
||||
--- a/render/animcur.c
|
||||
+++ b/render/animcur.c
|
||||
@@ -169,10 +169,9 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
|
||||
}
|
||||
|
||||
if (activeDevice)
|
||||
- TimerSet(as->timer, TimerAbsolute, soonest, AnimCurTimerNotify, pScreen);
|
||||
- else
|
||||
- as->timer_set = FALSE;
|
||||
+ return soonest - now;
|
||||
|
||||
+ as->timer_set = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
@ -1,188 +0,0 @@
|
||||
From 693f0e21d55d6e9fe792d91e76e4168aa813db71 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 26 Oct 2017 15:24:39 -0400
|
||||
Subject: [PATCH] animcur: Run the timer from the device, not the screen
|
||||
|
||||
This is very slightly more efficient since the callback now doesn't need
|
||||
to walk every input device, instead we know exactly which device's
|
||||
cursor is being updated. AnimCurTimerNotify() gets outdented nicely as a
|
||||
result. A more important side effect is that we can stop using the
|
||||
TimerAbsolute mode and just pass in the relative delay.
|
||||
|
||||
In AnimCurSetCursorPosition, we no longer need to rearm the timer with
|
||||
the new screen; it is enough to update the device's state. In
|
||||
AnimCurDisplayCursor we need to notice when we're switching from
|
||||
animated cursor to regular and cancel the existing timer.
|
||||
|
||||
Reviewed-by: Robert Morell <rmorell@nvidia.com>
|
||||
Tested-by: Robert Morell <rmorell@nvidia.com>
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
(cherry picked from commit 094a63d56fbfb9e23210cc9ac538fb198af37cee)
|
||||
---
|
||||
render/animcur.c | 87 +++++++++++++++++++-------------------------------------
|
||||
1 file changed, 29 insertions(+), 58 deletions(-)
|
||||
|
||||
diff --git a/render/animcur.c b/render/animcur.c
|
||||
index 26a6026ae..9393b4018 100644
|
||||
--- a/render/animcur.c
|
||||
+++ b/render/animcur.c
|
||||
@@ -55,6 +55,7 @@ typedef struct _AnimCurElt {
|
||||
typedef struct _AnimCur {
|
||||
int nelt; /* number of elements in the elts array */
|
||||
AnimCurElt *elts; /* actually allocated right after the structure */
|
||||
+ OsTimerPtr timer;
|
||||
} AnimCurRec, *AnimCurPtr;
|
||||
|
||||
typedef struct _AnimScrPriv {
|
||||
@@ -65,8 +66,6 @@ typedef struct _AnimScrPriv {
|
||||
RealizeCursorProcPtr RealizeCursor;
|
||||
UnrealizeCursorProcPtr UnrealizeCursor;
|
||||
RecolorCursorProcPtr RecolorCursor;
|
||||
- OsTimerPtr timer;
|
||||
- Bool timer_set;
|
||||
} AnimCurScreenRec, *AnimCurScreenPtr;
|
||||
|
||||
static unsigned char empty[4];
|
||||
@@ -130,49 +129,27 @@ AnimCurCursorLimits(DeviceIntPtr pDev,
|
||||
static CARD32
|
||||
AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
|
||||
{
|
||||
- ScreenPtr pScreen = arg;
|
||||
+ DeviceIntPtr dev = arg;
|
||||
+ ScreenPtr pScreen = dev->spriteInfo->anim.pScreen;
|
||||
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
|
||||
- DeviceIntPtr dev;
|
||||
- Bool activeDevice = FALSE;
|
||||
- CARD32 soonest = ~0; /* earliest time to wakeup again */
|
||||
-
|
||||
- for (dev = inputInfo.devices; dev; dev = dev->next) {
|
||||
- if (IsPointerDevice(dev) && pScreen == dev->spriteInfo->anim.pScreen) {
|
||||
- if (!activeDevice)
|
||||
- activeDevice = TRUE;
|
||||
-
|
||||
- if ((INT32) (now - dev->spriteInfo->anim.time) >= 0) {
|
||||
- AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
|
||||
- int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
|
||||
- DisplayCursorProcPtr DisplayCursor;
|
||||
-
|
||||
- /*
|
||||
- * Not a simple Unwrap/Wrap as this
|
||||
- * isn't called along the DisplayCursor
|
||||
- * wrapper chain.
|
||||
- */
|
||||
- DisplayCursor = pScreen->DisplayCursor;
|
||||
- pScreen->DisplayCursor = as->DisplayCursor;
|
||||
- (void) (*pScreen->DisplayCursor) (dev,
|
||||
- pScreen,
|
||||
- ac->elts[elt].pCursor);
|
||||
- as->DisplayCursor = pScreen->DisplayCursor;
|
||||
- pScreen->DisplayCursor = DisplayCursor;
|
||||
-
|
||||
- dev->spriteInfo->anim.elt = elt;
|
||||
- dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
|
||||
- }
|
||||
|
||||
- if (soonest > dev->spriteInfo->anim.time)
|
||||
- soonest = dev->spriteInfo->anim.time;
|
||||
- }
|
||||
- }
|
||||
+ AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
|
||||
+ int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
|
||||
+ DisplayCursorProcPtr DisplayCursor = pScreen->DisplayCursor;
|
||||
|
||||
- if (activeDevice)
|
||||
- return soonest - now;
|
||||
+ /*
|
||||
+ * Not a simple Unwrap/Wrap as this isn't called along the DisplayCursor
|
||||
+ * wrapper chain.
|
||||
+ */
|
||||
+ pScreen->DisplayCursor = as->DisplayCursor;
|
||||
+ (void) (*pScreen->DisplayCursor) (dev, pScreen, ac->elts[elt].pCursor);
|
||||
+ as->DisplayCursor = pScreen->DisplayCursor;
|
||||
+ pScreen->DisplayCursor = DisplayCursor;
|
||||
|
||||
- as->timer_set = FALSE;
|
||||
- return 0;
|
||||
+ dev->spriteInfo->anim.elt = elt;
|
||||
+ dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
|
||||
+
|
||||
+ return ac->elts[elt].delay;
|
||||
}
|
||||
|
||||
static Bool
|
||||
@@ -198,17 +175,19 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
|
||||
pDev->spriteInfo->anim.pCursor = pCursor;
|
||||
pDev->spriteInfo->anim.pScreen = pScreen;
|
||||
|
||||
- if (!as->timer_set) {
|
||||
- TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time,
|
||||
- AnimCurTimerNotify, pScreen);
|
||||
- as->timer_set = TRUE;
|
||||
- }
|
||||
+ ac->timer = TimerSet(ac->timer, 0, ac->elts[0].delay,
|
||||
+ AnimCurTimerNotify, pDev);
|
||||
}
|
||||
}
|
||||
else
|
||||
ret = TRUE;
|
||||
}
|
||||
else {
|
||||
+ CursorPtr old = pDev->spriteInfo->anim.pCursor;
|
||||
+
|
||||
+ if (old && IsAnimCur(old))
|
||||
+ TimerCancel(GetAnimCur(old)->timer);
|
||||
+
|
||||
pDev->spriteInfo->anim.pCursor = 0;
|
||||
pDev->spriteInfo->anim.pScreen = 0;
|
||||
ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
|
||||
@@ -227,12 +206,6 @@ AnimCurSetCursorPosition(DeviceIntPtr pDev,
|
||||
Unwrap(as, pScreen, SetCursorPosition);
|
||||
if (pDev->spriteInfo->anim.pCursor) {
|
||||
pDev->spriteInfo->anim.pScreen = pScreen;
|
||||
-
|
||||
- if (!as->timer_set) {
|
||||
- TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time,
|
||||
- AnimCurTimerNotify, pScreen);
|
||||
- as->timer_set = TRUE;
|
||||
- }
|
||||
}
|
||||
ret = (*pScreen->SetCursorPosition) (pDev, pScreen, x, y, generateEvent);
|
||||
Wrap(as, pScreen, SetCursorPosition, AnimCurSetCursorPosition);
|
||||
@@ -307,11 +280,6 @@ AnimCurInit(ScreenPtr pScreen)
|
||||
return FALSE;
|
||||
|
||||
as = GetAnimCurScreen(pScreen);
|
||||
- as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
|
||||
- if (!as->timer) {
|
||||
- return FALSE;
|
||||
- }
|
||||
- as->timer_set = FALSE;
|
||||
|
||||
Wrap(as, pScreen, CloseScreen, AnimCurCloseScreen);
|
||||
|
||||
@@ -359,10 +327,14 @@ AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
|
||||
|
||||
pCursor->id = cid;
|
||||
|
||||
+ ac = GetAnimCur(pCursor);
|
||||
+ ac->timer = TimerSet(NULL, 0, 0, AnimCurTimerNotify, NULL);
|
||||
+
|
||||
/* security creation/labeling check */
|
||||
rc = XaceHook(XACE_RESOURCE_ACCESS, client, cid, RT_CURSOR, pCursor,
|
||||
RT_NONE, NULL, DixCreateAccess);
|
||||
if (rc != Success) {
|
||||
+ TimerFree(ac->timer);
|
||||
dixFiniPrivates(pCursor, PRIVATE_CURSOR);
|
||||
free(pCursor);
|
||||
return rc;
|
||||
@@ -372,7 +344,6 @@ AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor,
|
||||
* Fill in the AnimCurRec
|
||||
*/
|
||||
animCursorBits.refcnt++;
|
||||
- ac = GetAnimCur(pCursor);
|
||||
ac->nelt = ncursor;
|
||||
ac->elts = (AnimCurElt *) (ac + 1);
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
@ -1,78 +0,0 @@
|
||||
From 5e83ebd76738455c443a66024b0b5eb92930b36c Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Tue, 9 Jan 2018 10:54:05 -0500
|
||||
Subject: [PATCH] animcur: Fix transitions between animated cursors
|
||||
|
||||
We weren't cancelling the old timer when changing cursors, making things
|
||||
go all crashy. Logically we could always cancel the timer first, but
|
||||
then we'd have to call TimerSet to re-arm ourselves, and GetTimeInMillis
|
||||
is potentially expensive.
|
||||
|
||||
Reported-by: https://devtalk.nvidia.com/default/topic/1028172/linux/titan-v-ubuntu-16-04lts-and-387-34-driver-crashes-badly/post/5230967/#5230967
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
|
||||
Tested-by: Aaron Plattner <aplattner@nvidia.com>
|
||||
(cherry picked from commit de60245e05c0d2528d4ff42557a044387e53315c)
|
||||
---
|
||||
render/animcur.c | 25 +++++++++++++++----------
|
||||
1 file changed, 15 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/render/animcur.c b/render/animcur.c
|
||||
index 9393b4018..e585a8f23 100644
|
||||
--- a/render/animcur.c
|
||||
+++ b/render/animcur.c
|
||||
@@ -152,11 +152,20 @@ AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
|
||||
return ac->elts[elt].delay;
|
||||
}
|
||||
|
||||
+static void
|
||||
+AnimCurCancelTimer(DeviceIntPtr pDev)
|
||||
+{
|
||||
+ CursorPtr cur = pDev->spriteInfo->anim.pCursor;
|
||||
+
|
||||
+ if (IsAnimCur(cur))
|
||||
+ TimerCancel(GetAnimCur(cur)->timer);
|
||||
+}
|
||||
+
|
||||
static Bool
|
||||
AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
|
||||
{
|
||||
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
|
||||
- Bool ret;
|
||||
+ Bool ret = TRUE;
|
||||
|
||||
if (IsFloating(pDev))
|
||||
return FALSE;
|
||||
@@ -166,8 +175,10 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
|
||||
if (pCursor != pDev->spriteInfo->anim.pCursor) {
|
||||
AnimCurPtr ac = GetAnimCur(pCursor);
|
||||
|
||||
- ret = (*pScreen->DisplayCursor)
|
||||
- (pDev, pScreen, ac->elts[0].pCursor);
|
||||
+ AnimCurCancelTimer(pDev);
|
||||
+ ret = (*pScreen->DisplayCursor) (pDev, pScreen,
|
||||
+ ac->elts[0].pCursor);
|
||||
+
|
||||
if (ret) {
|
||||
pDev->spriteInfo->anim.elt = 0;
|
||||
pDev->spriteInfo->anim.time =
|
||||
@@ -179,15 +190,9 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
|
||||
AnimCurTimerNotify, pDev);
|
||||
}
|
||||
}
|
||||
- else
|
||||
- ret = TRUE;
|
||||
}
|
||||
else {
|
||||
- CursorPtr old = pDev->spriteInfo->anim.pCursor;
|
||||
-
|
||||
- if (old && IsAnimCur(old))
|
||||
- TimerCancel(GetAnimCur(old)->timer);
|
||||
-
|
||||
+ AnimCurCancelTimer(pDev);
|
||||
pDev->spriteInfo->anim.pCursor = 0;
|
||||
pDev->spriteInfo->anim.pScreen = 0;
|
||||
ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
|
||||
--
|
||||
2.13.6
|
||||
|
59
U_Xext-shm-Refuse-to-work-for-remote-clients.patch
Normal file
59
U_Xext-shm-Refuse-to-work-for-remote-clients.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From ec7e2b54c5b4a34b2a077082967bc3ead30e227e Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||
Date: Tue, 5 Jun 2018 13:05:39 +0300
|
||||
Subject: [PATCH] Xext/shm: Refuse to work for remote clients
|
||||
|
||||
Avoid access to System V shared memory segment on the X server side
|
||||
for clients forwarded via SSH. Also prevent them from hanging while
|
||||
waiting for the reply from the ShmCreateSegment request.
|
||||
|
||||
v2: Allow ShmQueryVersion request even for remote clients
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=11080
|
||||
Signed-off-by: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
Xext/shm.c | 18 ++++++++++++++----
|
||||
1 file changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Xext/shm.c b/Xext/shm.c
|
||||
index fc8441c43..896a966e3 100644
|
||||
--- a/Xext/shm.c
|
||||
+++ b/Xext/shm.c
|
||||
@@ -1302,9 +1302,14 @@ static int
|
||||
ProcShmDispatch(ClientPtr client)
|
||||
{
|
||||
REQUEST(xReq);
|
||||
- switch (stuff->data) {
|
||||
- case X_ShmQueryVersion:
|
||||
+
|
||||
+ if (stuff->data == X_ShmQueryVersion)
|
||||
return ProcShmQueryVersion(client);
|
||||
+
|
||||
+ if (!client->local)
|
||||
+ return BadRequest;
|
||||
+
|
||||
+ switch (stuff->data) {
|
||||
case X_ShmAttach:
|
||||
return ProcShmAttach(client);
|
||||
case X_ShmDetach:
|
||||
@@ -1461,9 +1466,14 @@ static int _X_COLD
|
||||
SProcShmDispatch(ClientPtr client)
|
||||
{
|
||||
REQUEST(xReq);
|
||||
- switch (stuff->data) {
|
||||
- case X_ShmQueryVersion:
|
||||
+
|
||||
+ if (stuff->data == X_ShmQueryVersion)
|
||||
return SProcShmQueryVersion(client);
|
||||
+
|
||||
+ if (!client->local)
|
||||
+ return BadRequest;
|
||||
+
|
||||
+ switch (stuff->data) {
|
||||
case X_ShmAttach:
|
||||
return SProcShmAttach(client);
|
||||
case X_ShmDetach:
|
||||
--
|
||||
2.16.3
|
||||
|
@ -1,173 +0,0 @@
|
||||
Git-commit: 1326ee0bc5eb858c3c00847b3ba65134e4ca2e2d
|
||||
Patch-mainline: Upstream
|
||||
Author: Michal Srb <msrb@suse.com>
|
||||
Subject: glx: Do not call into Composite if it is disabled.
|
||||
References: bnc#1079607 fdo#104993
|
||||
|
||||
Otherwise X server crashes if GLX is enabled and Composite disabled. For
|
||||
example the compIsAlternateVisual function will try to lookup CompScreenPtr
|
||||
using the CompScreenPrivateKey, but that was never initialized if Composite is
|
||||
disabled.
|
||||
|
||||
Fixes: f84e59a4f4. ("glx: Duplicate relevant fbconfigs for compositing visuals")
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104993
|
||||
Signed-off-by: Michal Srb <msrb@suse.com>
|
||||
---
|
||||
glx/glxdricommon.c | 63 +++++++++++++++++++++++++++++-------------------------
|
||||
glx/glxscreens.c | 33 +++++++++++++++++-----------
|
||||
2 files changed, 55 insertions(+), 41 deletions(-)
|
||||
|
||||
Index: xorg-server-1.19.6/glx/glxdricommon.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/glx/glxdricommon.c
|
||||
+++ xorg-server-1.19.6/glx/glxdricommon.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <GL/glxtokens.h>
|
||||
#include <GL/internal/dri_interface.h>
|
||||
#include <os.h>
|
||||
+#include "extinit.h"
|
||||
#include "glxserver.h"
|
||||
#include "glxext.h"
|
||||
#include "glxcontext.h"
|
||||
@@ -206,25 +207,27 @@ createModeFromConfig(const __DRIcoreExte
|
||||
config->config.yInverted = GL_TRUE;
|
||||
|
||||
#ifdef COMPOSITE
|
||||
- /*
|
||||
- * Here we decide what fbconfigs will be duplicated for compositing.
|
||||
- * fgbconfigs marked with duplicatedForConf will be reserved for
|
||||
- * compositing visuals.
|
||||
- * It might look strange to do this decision this late when translation
|
||||
- * from a __DRIConfig is already done, but using the __DRIConfig
|
||||
- * accessor function becomes worse both with respect to code complexity
|
||||
- * and CPU usage.
|
||||
- */
|
||||
- if (duplicateForComp &&
|
||||
- (render_type_is_pbuffer_only(renderType) ||
|
||||
- config->config.rgbBits != 32 ||
|
||||
- config->config.visualRating != GLX_NONE ||
|
||||
- config->config.sampleBuffers != 0)) {
|
||||
- free(config);
|
||||
- return NULL;
|
||||
- }
|
||||
+ if (!noCompositeExtension) {
|
||||
+ /*
|
||||
+ * Here we decide what fbconfigs will be duplicated for compositing.
|
||||
+ * fgbconfigs marked with duplicatedForConf will be reserved for
|
||||
+ * compositing visuals.
|
||||
+ * It might look strange to do this decision this late when translation
|
||||
+ * from a __DRIConfig is already done, but using the __DRIConfig
|
||||
+ * accessor function becomes worse both with respect to code complexity
|
||||
+ * and CPU usage.
|
||||
+ */
|
||||
+ if (duplicateForComp &&
|
||||
+ (render_type_is_pbuffer_only(renderType) ||
|
||||
+ config->config.rgbBits != 32 ||
|
||||
+ config->config.visualRating != GLX_NONE ||
|
||||
+ config->config.sampleBuffers != 0)) {
|
||||
+ free(config);
|
||||
+ return NULL;
|
||||
+ }
|
||||
|
||||
- config->config.duplicatedForComp = duplicateForComp;
|
||||
+ config->config.duplicatedForComp = duplicateForComp;
|
||||
+ }
|
||||
#endif
|
||||
|
||||
return &config->config;
|
||||
@@ -258,14 +261,16 @@ glxConvertConfigs(const __DRIcoreExtensi
|
||||
}
|
||||
|
||||
#ifdef COMPOSITE
|
||||
- /* Duplicate fbconfigs for use with compositing visuals */
|
||||
- for (i = 0; configs[i]; i++) {
|
||||
- tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR,
|
||||
- GL_TRUE);
|
||||
- if (tail->next == NULL)
|
||||
- continue;
|
||||
+ if (!noCompositeExtension) {
|
||||
+ /* Duplicate fbconfigs for use with compositing visuals */
|
||||
+ for (i = 0; configs[i]; i++) {
|
||||
+ tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR,
|
||||
+ GL_TRUE);
|
||||
+ if (tail->next == NULL)
|
||||
+ continue;
|
||||
|
||||
- tail = tail->next;
|
||||
+ tail = tail->next;
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
|
||||
Index: xorg-server-1.19.6/glx/glxscreens.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/glx/glxscreens.c
|
||||
+++ xorg-server-1.19.6/glx/glxscreens.c
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <os.h>
|
||||
#include <colormapst.h>
|
||||
|
||||
+#include "extinit.h"
|
||||
#include "privates.h"
|
||||
#include "glxserver.h"
|
||||
#include "glxutil.h"
|
||||
@@ -279,10 +280,12 @@ pickFBConfig(__GLXscreen * pGlxScreen, V
|
||||
if (config->visualID != 0)
|
||||
continue;
|
||||
#ifdef COMPOSITE
|
||||
- /* Use only duplicated configs for compIsAlternateVisuals */
|
||||
- if (!!compIsAlternateVisual(pGlxScreen->pScreen, visual->vid) !=
|
||||
- !!config->duplicatedForComp)
|
||||
- continue;
|
||||
+ if (!noCompositeExtension) {
|
||||
+ /* Use only duplicated configs for compIsAlternateVisuals */
|
||||
+ if (!!compIsAlternateVisual(pGlxScreen->pScreen, visual->vid) !=
|
||||
+ !!config->duplicatedForComp)
|
||||
+ continue;
|
||||
+ }
|
||||
#endif
|
||||
/*
|
||||
* If possible, use the same swapmethod for all built-in visual
|
||||
@@ -352,8 +355,10 @@ __glXScreenInit(__GLXscreen * pGlxScreen
|
||||
pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
|
||||
config->visualID = visual->vid;
|
||||
#ifdef COMPOSITE
|
||||
- if (compIsAlternateVisual(pScreen, visual->vid))
|
||||
- config->visualSelectGroup++;
|
||||
+ if (!noCompositeExtension) {
|
||||
+ if (compIsAlternateVisual(pScreen, visual->vid))
|
||||
+ config->visualSelectGroup++;
|
||||
+ }
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -375,10 +380,12 @@ __glXScreenInit(__GLXscreen * pGlxScreen
|
||||
*/
|
||||
depth = config->redBits + config->greenBits + config->blueBits;
|
||||
#ifdef COMPOSITE
|
||||
- if (config->duplicatedForComp) {
|
||||
- depth += config->alphaBits;
|
||||
- config->visualSelectGroup++;
|
||||
- }
|
||||
+ if (!noCompositeExtension) {
|
||||
+ if (config->duplicatedForComp) {
|
||||
+ depth += config->alphaBits;
|
||||
+ config->visualSelectGroup++;
|
||||
+ }
|
||||
+ }
|
||||
#endif
|
||||
/* Make sure that our FBconfig's depth can actually be displayed
|
||||
* (corresponds to an existing visual).
|
||||
@@ -403,8 +410,10 @@ __glXScreenInit(__GLXscreen * pGlxScreen
|
||||
continue;
|
||||
|
||||
#ifdef COMPOSITE
|
||||
- if (config->duplicatedForComp)
|
||||
- (void) CompositeRegisterAlternateVisuals(pScreen, &visual->vid, 1);
|
||||
+ if (!noCompositeExtension) {
|
||||
+ if (config->duplicatedForComp)
|
||||
+ (void) CompositeRegisterAlternateVisuals(pScreen, &visual->vid, 1);
|
||||
+ }
|
||||
#endif
|
||||
pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
|
||||
initGlxVisual(visual, config);
|
40
U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
Normal file
40
U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From a85e94a50c94b07574c8701a3ff3c1243f4257f4 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Fri, 15 Jun 2018 08:57:12 +0200
|
||||
Subject: [PATCH] modesetting: use drmmode_bo_import() for rotate_fb
|
||||
|
||||
drmmode_shadow_allocate() still uses drmModeAddFB() which may fail if
|
||||
the format is not as expected, preventing from using a rotated output.
|
||||
|
||||
Change it to use the new function drmmode_bo_import() which takes care
|
||||
of calling the drmModeAddFB2() API.
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106715
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Tested-by: Tomas Pelka <tpelka@redhat.com>
|
||||
Reviewed-by: Lyude Paul <lyude@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/drmmode_display.c | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
index 859a21a9d..ec11b3f56 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
@@ -1794,11 +1794,8 @@ drmmode_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- ret = drmModeAddFB(drmmode->fd, width, height, crtc->scrn->depth,
|
||||
- drmmode->kbpp,
|
||||
- drmmode_bo_get_pitch(&drmmode_crtc->rotate_bo),
|
||||
- drmmode_bo_get_handle(&drmmode_crtc->rotate_bo),
|
||||
- &drmmode_crtc->rotate_fb_id);
|
||||
+ ret = drmmode_bo_import(drmmode, &drmmode_crtc->rotate_bo,
|
||||
+ &drmmode_crtc->rotate_fb_id);
|
||||
|
||||
if (ret) {
|
||||
ErrorF("failed to add rotate fb\n");
|
||||
--
|
||||
2.16.3
|
||||
|
@ -1,215 +0,0 @@
|
||||
Git-commit: dd00e5466a0e4ea313d1860824da4123692827ed
|
||||
Author: Adam Jackson <ajax@redhat.com>
|
||||
Subject: xfree86: Remove broken RANDR disabling logic (v4)
|
||||
Patch-mainline: Upstream
|
||||
References: bnc#1068961
|
||||
Signed-off-by: Michal Srb <msrb@suse.com>
|
||||
|
||||
The only way to get at xf86Info.disableRandR from configuration is
|
||||
Option "RANDR" "foo" in ServerFlags, which probably nobody is using
|
||||
seeing as it's not documented. The other way it could be set is if a
|
||||
screen supports RANDR 1.2, in which case we set it to avoid trying to
|
||||
use the RANDR 1.1 compat code. If the second screen is not 1.2-aware
|
||||
then this would mean we don't do RANDR setup on the second screen at
|
||||
all, which would almost certainly crash the first time you try to do
|
||||
RANDR operations on the second screen.
|
||||
|
||||
Fix that all by deletion, and just check whether the screen already has
|
||||
RANDR initialized before installing the stub support. If you want to
|
||||
disable RANDR, use the Extensions section of xorg.conf instead.
|
||||
|
||||
v2: Also remove a now entirely pointless log message, telling you to
|
||||
ignore a line we will no longer print.
|
||||
|
||||
v3: Explain the fallback path in InitOutput. (Keith Packard)
|
||||
|
||||
v4: Check whether the RANDR private key is initialized before trying to
|
||||
use it to look up the screen private.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
Reviewed-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
hw/xfree86/common/xf86.h | 2 --
|
||||
hw/xfree86/common/xf86Config.c | 12 ------------
|
||||
hw/xfree86/common/xf86Globals.c | 2 --
|
||||
hw/xfree86/common/xf86Helper.c | 7 -------
|
||||
hw/xfree86/common/xf86Init.c | 23 +++++++++++++++++------
|
||||
hw/xfree86/common/xf86Mode.c | 6 +-----
|
||||
hw/xfree86/common/xf86Privstr.h | 2 --
|
||||
hw/xfree86/modes/xf86Crtc.c | 3 ---
|
||||
8 files changed, 18 insertions(+), 39 deletions(-)
|
||||
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86.h
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86.h
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86.h
|
||||
@@ -319,8 +319,6 @@ extern _X_EXPORT Bool
|
||||
xf86GetModInDevEnabled(void);
|
||||
extern _X_EXPORT Bool
|
||||
xf86GetAllowMouseOpenFail(void);
|
||||
-extern _X_EXPORT void
|
||||
-xf86DisableRandR(void);
|
||||
extern _X_EXPORT CARD32
|
||||
xorgGetVersion(void);
|
||||
extern _X_EXPORT CARD32
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Config.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Config.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Config.c
|
||||
@@ -710,7 +710,6 @@ typedef enum {
|
||||
FLAG_XINERAMA,
|
||||
FLAG_LOG,
|
||||
FLAG_RENDER_COLORMAP_MODE,
|
||||
- FLAG_RANDR,
|
||||
FLAG_IGNORE_ABI,
|
||||
FLAG_ALLOW_EMPTY_INPUT,
|
||||
FLAG_USE_DEFAULT_FONT_PATH,
|
||||
@@ -763,8 +762,6 @@ static OptionInfoRec FlagOptions[] = {
|
||||
{0}, FALSE},
|
||||
{FLAG_RENDER_COLORMAP_MODE, "RenderColormapMode", OPTV_STRING,
|
||||
{0}, FALSE},
|
||||
- {FLAG_RANDR, "RandR", OPTV_BOOLEAN,
|
||||
- {0}, FALSE},
|
||||
{FLAG_IGNORE_ABI, "IgnoreABI", OPTV_BOOLEAN,
|
||||
{0}, FALSE},
|
||||
{FLAG_USE_DEFAULT_FONT_PATH, "UseDefaultFontPath", OPTV_BOOLEAN,
|
||||
@@ -909,15 +906,6 @@ configServerFlags(XF86ConfFlagsPtr flags
|
||||
}
|
||||
}
|
||||
|
||||
-#ifdef RANDR
|
||||
- xf86Info.disableRandR = FALSE;
|
||||
- xf86Info.randRFrom = X_DEFAULT;
|
||||
- if (xf86GetOptValBool(FlagOptions, FLAG_RANDR, &value)) {
|
||||
- xf86Info.disableRandR = !value;
|
||||
- xf86Info.randRFrom = X_CONFIG;
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
#ifdef GLXEXT
|
||||
xf86Info.glxVisuals = XF86_GlxVisualsTypical;
|
||||
xf86Info.glxVisualsFrom = X_DEFAULT;
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Globals.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Globals.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Globals.c
|
||||
@@ -121,8 +121,6 @@ xf86InfoRec xf86Info = {
|
||||
.pixmap24 = Pix24DontCare,
|
||||
.pix24From = X_DEFAULT,
|
||||
.pmFlag = TRUE,
|
||||
- .disableRandR = FALSE,
|
||||
- .randRFrom = X_DEFAULT,
|
||||
#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS)
|
||||
.forceInputDevices = FALSE,
|
||||
.autoAddDevices = TRUE,
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Helper.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
|
||||
@@ -1572,13 +1572,6 @@ xf86GetAllowMouseOpenFail(void)
|
||||
return xf86Info.allowMouseOpenFail;
|
||||
}
|
||||
|
||||
-void
|
||||
-xf86DisableRandR(void)
|
||||
-{
|
||||
- xf86Info.disableRandR = TRUE;
|
||||
- xf86Info.randRFrom = X_PROBED;
|
||||
-}
|
||||
-
|
||||
CARD32
|
||||
xf86GetModuleVersion(void *module)
|
||||
{
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
|
||||
@@ -77,6 +77,7 @@
|
||||
#include "xf86Xinput.h"
|
||||
#include "xf86InPriv.h"
|
||||
#include "picturestr.h"
|
||||
+#include "randrstr.h"
|
||||
|
||||
#include "xf86Bus.h"
|
||||
#ifdef XSERVER_LIBPCIACCESS
|
||||
@@ -380,6 +381,16 @@ xf86ScreenInit(ScreenPtr pScreen, int ar
|
||||
return pScrn->ScreenInit (pScreen, argc, argv);
|
||||
}
|
||||
|
||||
+static void
|
||||
+xf86EnsureRANDR(ScreenPtr pScreen)
|
||||
+{
|
||||
+#ifdef RANDR
|
||||
+ if (!dixPrivateKeyRegistered(rrPrivKey) ||
|
||||
+ !rrGetScrPriv(pScreen))
|
||||
+ xf86RandRInit(pScreen);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* InitOutput --
|
||||
* Initialize screenInfo for all actually accessible framebuffers.
|
||||
@@ -871,12 +882,12 @@ InitOutput(ScreenInfo * pScreenInfo, int
|
||||
SubPixelHorizontalRGB : SubPixelNone) :
|
||||
SubPixelUnknown);
|
||||
}
|
||||
-#ifdef RANDR
|
||||
- if (!xf86Info.disableRandR)
|
||||
- xf86RandRInit(screenInfo.screens[scr_index]);
|
||||
- xf86Msg(xf86Info.randRFrom, "RandR %s\n",
|
||||
- xf86Info.disableRandR ? "disabled" : "enabled");
|
||||
-#endif
|
||||
+
|
||||
+ /*
|
||||
+ * If the driver hasn't set up its own RANDR support, install the
|
||||
+ * fallback support.
|
||||
+ */
|
||||
+ xf86EnsureRANDR(xf86Screens[i]->pScreen);
|
||||
}
|
||||
|
||||
for (i = 0; i < xf86NumGPUScreens; i++)
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Mode.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Mode.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Mode.c
|
||||
@@ -1664,12 +1664,8 @@ xf86ValidateModes(ScrnInfoPtr scrp, Disp
|
||||
}
|
||||
|
||||
/* Lookup each mode */
|
||||
-#ifdef RANDR
|
||||
- if (!xf86Info.disableRandR
|
||||
#ifdef PANORAMIX
|
||||
- && noPanoramiXExtension
|
||||
-#endif
|
||||
- )
|
||||
+ if (noPanoramiXExtension)
|
||||
validateAllDefaultModes = TRUE;
|
||||
#endif
|
||||
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Privstr.h
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Privstr.h
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Privstr.h
|
||||
@@ -85,8 +85,6 @@ typedef struct {
|
||||
Pix24Flags pixmap24;
|
||||
MessageType pix24From;
|
||||
Bool pmFlag;
|
||||
- Bool disableRandR;
|
||||
- MessageType randRFrom;
|
||||
MessageType iglxFrom;
|
||||
XF86_GlxVisuals glxVisuals;
|
||||
MessageType glxVisualsFrom;
|
||||
Index: xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/modes/xf86Crtc.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c
|
||||
@@ -773,9 +773,6 @@ xf86CrtcScreenInit(ScreenPtr screen)
|
||||
int c;
|
||||
|
||||
/* Rotation */
|
||||
- xf86DrvMsg(scrn->scrnIndex, X_INFO,
|
||||
- "RandR 1.2 enabled, ignore the following RandR disabled message.\n");
|
||||
- xf86DisableRandR(); /* Disable old RandR extension support */
|
||||
xf86RandR12Init(screen);
|
||||
|
||||
/* support all rotations if every crtc has the shadow alloc funcs */
|
60
U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
Normal file
60
U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
Normal file
@ -0,0 +1,60 @@
|
||||
Git-commit: ba1e6eaea84b73e6ccd5f73acb93110eadb1a640
|
||||
Author: Michal Srb <msrb@suse.com>
|
||||
Subject: xkb: Fix heap overflow caused by optimized away min.
|
||||
Patch-mainline: Upstream
|
||||
References: boo#1099113
|
||||
|
||||
Calling strlen on char[4] that does not need to contain '\0' is wrong and X
|
||||
server may end up running into invalid memory.
|
||||
|
||||
In addition GCC 8 is clever enough that it knows that strlen on char[4] can
|
||||
return 0, 1, 2, 3 or cause undefined behavior. With this knowledge it can
|
||||
optimize away the min(..., 4). When the undefined behavior happens, any long
|
||||
value can be passed as size to the memcpy which will overflow the destination
|
||||
buffer.
|
||||
|
||||
Fixes: 83913de25d35 (xkb: Silence some compiler warnings)
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86259
|
||||
---
|
||||
xkb/XKBGAlloc.c | 11 +++++------
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c
|
||||
index 8958b0c52..f0cda24fe 100644
|
||||
--- a/xkb/XKBGAlloc.c
|
||||
+++ b/xkb/XKBGAlloc.c
|
||||
@@ -588,8 +588,7 @@ XkbAddGeomKeyAlias(XkbGeometryPtr geom, char *aliasStr, char *realStr)
|
||||
i++, alias++) {
|
||||
if (strncmp(alias->alias, aliasStr, XkbKeyNameLength) == 0) {
|
||||
memset(alias->real, 0, XkbKeyNameLength);
|
||||
- memcpy(alias->real, realStr,
|
||||
- min(XkbKeyNameLength, strlen(realStr)));
|
||||
+ memcpy(alias->real, realStr, strnlen(realStr, XkbKeyNameLength));
|
||||
return alias;
|
||||
}
|
||||
}
|
||||
@@ -599,8 +598,8 @@ XkbAddGeomKeyAlias(XkbGeometryPtr geom, char *aliasStr, char *realStr)
|
||||
}
|
||||
alias = &geom->key_aliases[geom->num_key_aliases];
|
||||
memset(alias, 0, sizeof(XkbKeyAliasRec));
|
||||
- memcpy(alias->alias, aliasStr, min(XkbKeyNameLength, strlen(aliasStr)));
|
||||
- memcpy(alias->real, realStr, min(XkbKeyNameLength, strlen(realStr)));
|
||||
+ memcpy(alias->alias, aliasStr, strnlen(aliasStr, XkbKeyNameLength));
|
||||
+ memcpy(alias->real, realStr, strnlen(realStr, XkbKeyNameLength));
|
||||
geom->num_key_aliases++;
|
||||
return alias;
|
||||
}
|
||||
@@ -815,8 +814,8 @@ XkbAddGeomOverlayKey(XkbOverlayPtr overlay,
|
||||
(_XkbAllocOverlayKeys(row, 1) != Success))
|
||||
return NULL;
|
||||
key = &row->keys[row->num_keys];
|
||||
- memcpy(key->under.name, under, min(XkbKeyNameLength, strlen(under)));
|
||||
- memcpy(key->over.name, over, min(XkbKeyNameLength, strlen(over)));
|
||||
+ memcpy(key->under.name, under, strnlen(under, XkbKeyNameLength));
|
||||
+ memcpy(key->over.name, over, strnlen(over, XkbKeyNameLength));
|
||||
row->num_keys++;
|
||||
return key;
|
||||
}
|
||||
--
|
||||
2.13.6
|
||||
|
@ -1,92 +0,0 @@
|
||||
From e96bd477395af3c2c3157ebda0f55ea4b672a114 Mon Sep 17 00:00:00 2001
|
||||
From: Lyude Paul <lyude@redhat.com>
|
||||
Date: Tue, 6 Feb 2018 12:41:47 -0500
|
||||
Subject: [PATCH] xwayland: Don't process cursor warping without an xwl_seat
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Unfortunately, on my machine Xwayland immediately crashes when I try to
|
||||
start it. gdb backtrace:
|
||||
|
||||
#0 0x00007ffff74f0e79 in wl_proxy_marshal () from target:/lib64/libwayland-client.so.0
|
||||
#1 0x0000000000413172 in zwp_confined_pointer_v1_destroy (zwp_confined_pointer_v1=0x700000000)
|
||||
at hw/xwayland/Xwayland@exe/pointer-constraints-unstable-v1-client-protocol.h:612
|
||||
#2 0x0000000000418bc0 in xwl_seat_destroy_confined_pointer (xwl_seat=0x8ba2a0)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2839
|
||||
#3 0x0000000000418c09 in xwl_seat_unconfine_pointer (xwl_seat=0x8ba2a0)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2849
|
||||
#4 0x0000000000410d97 in xwl_cursor_confined_to (device=0xa5a000, screen=0x8b9d80, window=0x9bdb70)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland.c:328
|
||||
#5 0x00000000004a8571 in ConfineCursorToWindow (pDev=0xa5a000, pWin=0x9bdb70, generateEvents=1,
|
||||
confineToScreen=0) at /home/lyudess/Projects/xserver/dix/events.c:900
|
||||
#6 0x00000000004a94b7 in ScreenRestructured (pScreen=0x8b9d80)
|
||||
at /home/lyudess/Projects/xserver/dix/events.c:1387
|
||||
#7 0x0000000000502386 in RRScreenSizeNotify (pScreen=0x8b9d80)
|
||||
at /home/lyudess/Projects/xserver/randr/rrscreen.c:160
|
||||
#8 0x000000000041a83c in update_screen_size (xwl_output=0x8e7670, width=3840, height=2160)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:203
|
||||
#9 0x000000000041a9f0 in apply_output_change (xwl_output=0x8e7670)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:252
|
||||
#10 0x000000000041aaeb in xdg_output_handle_done (data=0x8e7670, xdg_output=0x8e7580)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:307
|
||||
#11 0x00007ffff50e9d1e in ffi_call_unix64 () at ../src/x86/unix64.S:76
|
||||
#12 0x00007ffff50e968f in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>,
|
||||
avalue=<optimized out>) at ../src/x86/ffi64.c:525
|
||||
#13 0x00007ffff74f3d8b in wl_closure_invoke () from target:/lib64/libwayland-client.so.0
|
||||
#14 0x00007ffff74f0928 in dispatch_event.isra () from target:/lib64/libwayland-client.so.0
|
||||
#15 0x00007ffff74f1be4 in wl_display_dispatch_queue_pending () from target:/lib64/libwayland-client.so.0
|
||||
#16 0x00007ffff74f200b in wl_display_roundtrip_queue () from target:/lib64/libwayland-client.so.0
|
||||
#17 0x0000000000418cad in InitInput (argc=12, argv=0x7fffffffd9c8)
|
||||
at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2867
|
||||
#18 0x00000000004a20e3 in dix_main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
|
||||
at /home/lyudess/Projects/xserver/dix/main.c:250
|
||||
#19 0x0000000000420cb2 in main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
|
||||
at /home/lyudess/Projects/xserver/dix/stubmain.c:34
|
||||
|
||||
This appears to be the result of xwl_cursor_confined_to() and
|
||||
xwl_screen_get_default_seat(). While not against protocol, mutter ends
|
||||
up sending xdg_output before wl_seat. xwl_screen_get_default_seat()
|
||||
makes the naïve assumption that we always have a valid seat, we end up
|
||||
returning a pointer to the empty list itself instead of an actual seat
|
||||
and causing ourselves to segfault.
|
||||
|
||||
So, actually return NULL in xwl_screen_get_default_seat() if the seat
|
||||
list is empty, and skip any pointer confinement processing in
|
||||
xwl_cursor_confined_to() when we don't have a seat setup yet.
|
||||
|
||||
Signed-off-by: Lyude Paul <lyude@redhat.com>
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
(cherry picked from commit 98edb9a35e2cdd61355656b82975d7f2b6a9f0e6)
|
||||
---
|
||||
hw/xwayland/xwayland.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
|
||||
index 0e7929715..d0bdf36a4 100644
|
||||
--- a/hw/xwayland/xwayland.c
|
||||
+++ b/hw/xwayland/xwayland.c
|
||||
@@ -159,6 +159,9 @@ xwl_window_from_window(WindowPtr window)
|
||||
static struct xwl_seat *
|
||||
xwl_screen_get_default_seat(struct xwl_screen *xwl_screen)
|
||||
{
|
||||
+ if (xorg_list_is_empty(&xwl_screen->seat_list))
|
||||
+ return NULL;
|
||||
+
|
||||
return container_of(xwl_screen->seat_list.prev,
|
||||
struct xwl_seat,
|
||||
link);
|
||||
@@ -218,6 +221,10 @@ xwl_cursor_confined_to(DeviceIntPtr device,
|
||||
if (!xwl_seat)
|
||||
xwl_seat = xwl_screen_get_default_seat(xwl_screen);
|
||||
|
||||
+ /* xwl_seat hasn't been setup yet, don't do anything just yet */
|
||||
+ if (!xwl_seat)
|
||||
+ return;
|
||||
+
|
||||
if (window == screen->root) {
|
||||
xwl_seat_unconfine_pointer(xwl_seat);
|
||||
return;
|
||||
--
|
||||
2.16.1
|
||||
|
@ -1,99 +0,0 @@
|
||||
From fe46cbea0f19959d469ca4d1f09be379dc7b1e45 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Tue, 21 Nov 2017 14:45:13 +0100
|
||||
Subject: [PATCH xserver] =?UTF-8?q?xwayland:=20Give=20up=20=E2=80=9Ccleanl?=
|
||||
=?UTF-8?q?y=E2=80=9C=20on=20Wayland=20socket=20errors?=
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Xwayland is a pretty standard Wayland client, we want to be able to
|
||||
capture core dumps on crashes.
|
||||
|
||||
Yet using "-core" causes any FatalError() to generate a core dump,
|
||||
meaning that we would get a core file for all Wayland server crashes,
|
||||
which would generate a lot of false positives.
|
||||
|
||||
Instead of using FatalError() on Wayland socket errors, give up cleanly
|
||||
to avoid dumping core files when "-core" is used.
|
||||
|
||||
See also: https://bugzilla.gnome.org/show_bug.cgi?id=790502
|
||||
and: https://bugzilla.gnome.org/show_bug.cgi?id=789086
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
---
|
||||
hw/xwayland/xwayland.c | 26 +++++++++++++++++++++-----
|
||||
1 file changed, 21 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
|
||||
index 638022180..c5a3ae7ae 100644
|
||||
--- a/hw/xwayland/xwayland.c
|
||||
+++ b/hw/xwayland/xwayland.c
|
||||
@@ -73,6 +73,22 @@ ddxBeforeReset(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
+ _X_NORETURN
|
||||
+static void _X_ATTRIBUTE_PRINTF(1, 2)
|
||||
+xwl_give_up(const char *f, ...)
|
||||
+{
|
||||
+ va_list args;
|
||||
+
|
||||
+ va_start(args, f);
|
||||
+ VErrorFSigSafe(f, args);
|
||||
+ va_end(args);
|
||||
+
|
||||
+ CloseWellKnownConnections();
|
||||
+ OsCleanup(TRUE);
|
||||
+ fflush(stderr);
|
||||
+ exit(1);
|
||||
+}
|
||||
+
|
||||
void
|
||||
ddxUseMsg(void)
|
||||
{
|
||||
@@ -719,13 +735,13 @@ xwl_read_events (struct xwl_screen *xwl_screen)
|
||||
|
||||
ret = wl_display_read_events(xwl_screen->display);
|
||||
if (ret == -1)
|
||||
- FatalError("failed to read Wayland events: %s\n", strerror(errno));
|
||||
+ xwl_give_up("failed to read Wayland events: %s\n", strerror(errno));
|
||||
|
||||
xwl_screen->prepare_read = 0;
|
||||
|
||||
ret = wl_display_dispatch_pending(xwl_screen->display);
|
||||
if (ret == -1)
|
||||
- FatalError("failed to dispatch Wayland events: %s\n", strerror(errno));
|
||||
+ xwl_give_up("failed to dispatch Wayland events: %s\n", strerror(errno));
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -752,7 +768,7 @@ xwl_dispatch_events (struct xwl_screen *xwl_screen)
|
||||
wl_display_prepare_read(xwl_screen->display) == -1) {
|
||||
ret = wl_display_dispatch_pending(xwl_screen->display);
|
||||
if (ret == -1)
|
||||
- FatalError("failed to dispatch Wayland events: %s\n",
|
||||
+ xwl_give_up("failed to dispatch Wayland events: %s\n",
|
||||
strerror(errno));
|
||||
}
|
||||
|
||||
@@ -761,13 +777,13 @@ xwl_dispatch_events (struct xwl_screen *xwl_screen)
|
||||
pollout:
|
||||
ready = xwl_display_pollout(xwl_screen, 5);
|
||||
if (ready == -1 && errno != EINTR)
|
||||
- FatalError("error polling on XWayland fd: %s\n", strerror(errno));
|
||||
+ xwl_give_up("error polling on XWayland fd: %s\n", strerror(errno));
|
||||
|
||||
if (ready > 0)
|
||||
ret = wl_display_flush(xwl_screen->display);
|
||||
|
||||
if (ret == -1 && errno != EAGAIN)
|
||||
- FatalError("failed to write to XWayland fd: %s\n", strerror(errno));
|
||||
+ xwl_give_up("failed to write to XWayland fd: %s\n", strerror(errno));
|
||||
|
||||
xwl_screen->wait_flush = (ready == 0 || ready == -1 || ret == -1);
|
||||
}
|
||||
--
|
||||
2.14.3
|
||||
|
@ -1,42 +0,0 @@
|
||||
From 16fd18479d2f617adf0e6de922586441be3808eb Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Fri, 15 Dec 2017 16:43:47 +0100
|
||||
Subject: [PATCH] xwayland: avoid race condition on new keymap
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When the Wayland compositor notifies of a new keymap, for the first X11
|
||||
client using the keyboard, the last slave keyboard used might still not
|
||||
be set (i.e. “lastSlave” is still NULL).
|
||||
|
||||
As a result, the new keymap is not applied, and the first X11 window
|
||||
will have the wrong keymap set initially.
|
||||
|
||||
Apply the new keymap to the master keyboard as long as there's one.
|
||||
|
||||
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=791383
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
(cherry picked from commit 170c95978530f6373bdf4488116902b273f3abf4)
|
||||
---
|
||||
hw/xwayland/xwayland-input.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
|
||||
index f2564d5d3..d96e6f2a4 100644
|
||||
--- a/hw/xwayland/xwayland-input.c
|
||||
+++ b/hw/xwayland/xwayland-input.c
|
||||
@@ -639,7 +639,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
|
||||
XkbDeviceApplyKeymap(xwl_seat->keyboard, xkb);
|
||||
|
||||
master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD);
|
||||
- if (master && master->lastSlave == xwl_seat->keyboard)
|
||||
+ if (master)
|
||||
XkbDeviceApplyKeymap(master, xkb);
|
||||
|
||||
XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE);
|
||||
--
|
||||
2.16.1
|
||||
|
@ -1,67 +0,0 @@
|
||||
From f6cd99ed79c17e3aa04b8821d10ca95939bd8675 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Wed, 24 Jan 2018 17:45:37 +0100
|
||||
Subject: [PATCH] xwayland: remove dirty window unconditionally on unrealize
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This is a rare occurrence of a crash in Xwayland for which I don't have
|
||||
the reproducing steps, just a core file.
|
||||
|
||||
The backtrace looks as follow:
|
||||
|
||||
#0 raise () from /usr/lib64/libc.so.6
|
||||
#1 abort () from /usr/lib64/libc.so.6
|
||||
#2 OsAbort () at utils.c:1361
|
||||
#3 AbortServer () at log.c:877
|
||||
#4 FatalError () at log.c:1015
|
||||
#5 OsSigHandler () at osinit.c:154
|
||||
#6 <signal handler called>
|
||||
#7 xwl_glamor_pixmap_get_wl_buffer () at xwayland-glamor.c:162
|
||||
#8 xwl_screen_post_damage () at xwayland.c:514
|
||||
#9 block_handler () at xwayland.c:665
|
||||
#10 BlockHandler () at dixutils.c:388
|
||||
#11 WaitForSomething () at WaitFor.c:219
|
||||
#12 Dispatch () at dispatch.c:422
|
||||
#13 dix_main () at main.c:287
|
||||
|
||||
The crash is caused by dereferencing “xwl_pixmap->buffer” in
|
||||
xwl_glamor_pixmap_get_wl_buffer() because “xwl_pixmap” is NULL.
|
||||
|
||||
Reason for this is because the corresponding pixmap is from the root
|
||||
window and xwayland is rootless by default.
|
||||
|
||||
This can happen if the window was mapped, redirected, damaged and
|
||||
unredirected immediately, before the damage is processed by Xwayland.
|
||||
|
||||
Make sure to remove the dirty window from the damage list on unrealize
|
||||
to prevent this from happening.
|
||||
|
||||
Credit goes to Adam Jackson <ajax@nwnk.net> and Daniel Stone
|
||||
<daniel@fooishbar.org> for finding the root cause the issue.
|
||||
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Reviewed-by: Daniel Stone <daniels@collabora.com>
|
||||
(cherry picked from commit 3362422e8413dd9f231cfac50ce0a0862525b1bf)
|
||||
---
|
||||
hw/xwayland/xwayland.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
|
||||
index 939f3392c..0e7929715 100644
|
||||
--- a/hw/xwayland/xwayland.c
|
||||
+++ b/hw/xwayland/xwayland.c
|
||||
@@ -454,8 +454,7 @@ xwl_unrealize_window(WindowPtr window)
|
||||
return ret;
|
||||
|
||||
wl_surface_destroy(xwl_window->surface);
|
||||
- if (RegionNotEmpty(DamageRegion(xwl_window->damage)))
|
||||
- xorg_list_del(&xwl_window->link_damage);
|
||||
+ xorg_list_del(&xwl_window->link_damage);
|
||||
DamageUnregister(xwl_window->damage);
|
||||
DamageDestroy(xwl_window->damage);
|
||||
if (xwl_window->frame_callback)
|
||||
--
|
||||
2.16.1
|
||||
|
@ -1,52 +0,0 @@
|
||||
Subject: Add dummy xf86DisableRandR.
|
||||
Patch-mainline: Never
|
||||
Author: Michal Srb <msrb@suse.com>
|
||||
References: bnc#1089601
|
||||
|
||||
This is temporary fix for breakage after backporting upstream patch
|
||||
dd00e5466a0e4ea313d1860824da4123692827ed (xorg-server-1.19.0-566-gdd00e5466).
|
||||
|
||||
The patch removed function xf86DisableRandR. This patch re-adds it as a dummy function
|
||||
that does nothing to fix linking with drivers that expect it. Drivers should no longer
|
||||
call it, so putting it back empty has the same effect.
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86.h
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86.h
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86.h
|
||||
@@ -319,6 +319,10 @@ extern _X_EXPORT Bool
|
||||
xf86GetModInDevEnabled(void);
|
||||
extern _X_EXPORT Bool
|
||||
xf86GetAllowMouseOpenFail(void);
|
||||
+// Warning: This function does nothing now.
|
||||
+// See: https://bugzilla.opensuse.org/show_bug.cgi?id=1089601
|
||||
+extern _X_EXPORT void
|
||||
+xf86DisableRandR(void);
|
||||
extern _X_EXPORT CARD32
|
||||
xorgGetVersion(void);
|
||||
extern _X_EXPORT CARD32
|
||||
Index: xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
|
||||
===================================================================
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Helper.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c
|
||||
@@ -1572,6 +1572,21 @@ xf86GetAllowMouseOpenFail(void)
|
||||
return xf86Info.allowMouseOpenFail;
|
||||
}
|
||||
|
||||
+void
|
||||
+xf86DisableRandR(void)
|
||||
+{
|
||||
+ // Do nothing!
|
||||
+
|
||||
+ // This function was re-added to fix linking problems with drivers that expect it.
|
||||
+ // For example nvidia. See: https://bugzilla.opensuse.org/show_bug.cgi?id=1089601
|
||||
+
|
||||
+ // This function was used to disable RANDR 1.1 if the driver intended to initialize
|
||||
+ // RANDR 1.2+ itself. Since patch dd00e5466a0e4ea313d1860824da4123692827ed ("xfree86:
|
||||
+ // Remove broken RANDR disabling logic") this is no longer necessary. X server will
|
||||
+ // only initialize RANDR 1.1 if no driver initialized any other RANDR. So the result
|
||||
+ // is the same even with this function doing nothing.
|
||||
+}
|
||||
+
|
||||
CARD32
|
||||
xf86GetModuleVersion(void *module)
|
||||
{
|
@ -27,7 +27,7 @@ Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
|
||||
--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c
|
||||
+++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
|
||||
@@ -297,6 +297,16 @@ xf86PrivsElevated(void)
|
||||
return privsElevated;
|
||||
return PrivsElevated();
|
||||
}
|
||||
|
||||
+extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
|
||||
@ -41,7 +41,7 @@ Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c
|
||||
+}
|
||||
+
|
||||
static void
|
||||
InstallSignalHandlers(void)
|
||||
TrapSignals(void)
|
||||
{
|
||||
@@ -872,6 +882,8 @@ InitOutput(ScreenInfo * pScreenInfo, int
|
||||
for (i = 0; i < xf86NumGPUScreens; i++)
|
||||
|
@ -85,9 +85,9 @@ Index: xorg-server-1.19.3/os/auth.c
|
||||
|
||||
struct protocol {
|
||||
unsigned short name_length;
|
||||
@@ -302,18 +306,142 @@ GenerateAuthorization(unsigned name_leng
|
||||
return -1;
|
||||
}
|
||||
@@ -304,16 +308,140 @@ GenerateAuthorization(unsigned name_length,
|
||||
|
||||
#endif /* XCSECURITY */
|
||||
|
||||
+#if ! defined(HAVE_ARC4RANDOM_BUF)
|
||||
+
|
||||
@ -231,5 +231,3 @@ Index: xorg-server-1.19.3/os/auth.c
|
||||
+ }
|
||||
+#endif // HAVE_ARC4RANDOM_BUF
|
||||
}
|
||||
|
||||
#endif /* XCSECURITY */
|
||||
|
31
u_modesetting-Fix-cirrus-24bpp-breakage.patch
Normal file
31
u_modesetting-Fix-cirrus-24bpp-breakage.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Subject: modesetting: Fix cirrus 24bpp breakage
|
||||
References: bsc#1101699
|
||||
|
||||
The recent rewrite of modesetting driver broke the 24bpp support.
|
||||
As typically found on cirrus KMS, it leads to a blank screen, spewing
|
||||
the error like:
|
||||
failed to add fb -22
|
||||
(EE) modeset(0): failed to set mode: Invalid argument
|
||||
|
||||
The culript is that the wrong bpp value of the front buffer is passed
|
||||
to drmModeAddFB(). Fix it by replacing with the back buffer bpp,
|
||||
drmmode->kbpp.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/drmmode_display.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
@@ -990,7 +990,7 @@ drmmode_bo_import(drmmode_ptr drmmode, d
|
||||
}
|
||||
#endif
|
||||
return drmModeAddFB(drmmode->fd, bo->width, bo->height,
|
||||
- drmmode->scrn->depth, drmmode->scrn->bitsPerPixel,
|
||||
+ drmmode->scrn->depth, drmmode->kbpp,
|
||||
drmmode_bo_get_pitch(bo),
|
||||
drmmode_bo_get_handle(bo), fb_id);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
Author: Michal Srb <msrb@suse.com>
|
||||
Subject: os/inputthread: Force unlock when stopping thread.
|
||||
Patch-Mainline: To be upstreamed
|
||||
References: bnc#1062977
|
||||
|
||||
The inputthread is kept locked all the time while X server's VT is not active.
|
||||
If the X server is terminated while not active, it will be stuck forever in
|
||||
InputThreadFini waiting for the thread to join, but it wouldn't because it is
|
||||
locked.
|
||||
---
|
||||
This fixes the X server termination while its VT is not active. I think it
|
||||
should be safe to force unlock it from InputThreadFini - X server is
|
||||
terminating and nothing else should race there, but I am not completely sure.
|
||||
|
||||
os/inputthread.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/os/inputthread.c b/os/inputthread.c
|
||||
index 721e86312..dc4eb9f20 100644
|
||||
--- a/os/inputthread.c
|
||||
+++ b/os/inputthread.c
|
||||
@@ -497,6 +497,7 @@ InputThreadFini(void)
|
||||
|
||||
/* Close the pipe to get the input thread to shut down */
|
||||
close(hotplugPipeWrite);
|
||||
+ input_force_unlock();
|
||||
pthread_join(inputThreadInfo->thread, NULL);
|
||||
|
||||
xorg_list_for_each_entry_safe(dev, next, &inputThreadInfo->devs, node) {
|
||||
--
|
||||
2.12.3
|
||||
|
@ -1,166 +0,0 @@
|
||||
From a79c59476f9282d67963baf587ccce22e73fa2e5 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Tue, 9 Jan 2018 17:06:55 +0100
|
||||
Author: Martin Wilck <mwilck@suse.com>
|
||||
Subject: [PATCH] xfree86: add default modes for 16:9 and 16:10
|
||||
References: bsc#1075249
|
||||
Patch-Mainline: To be upstreamed, submitted to xorg-devel 20180109
|
||||
|
||||
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
---
|
||||
hw/xfree86/common/extramodes | 142 +++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 142 insertions(+)
|
||||
|
||||
diff --git a/hw/xfree86/common/extramodes b/hw/xfree86/common/extramodes
|
||||
index 450502670286..5a446938250f 100644
|
||||
--- a/hw/xfree86/common/extramodes
|
||||
+++ b/hw/xfree86/common/extramodes
|
||||
@@ -25,3 +25,145 @@ Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vs
|
||||
# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
|
||||
Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync
|
||||
|
||||
+### 16:9 modelines generated by cvt
|
||||
+
|
||||
+# 640x360 59.32 Hz (CVT 0.23M9-R) hsync: 22.19 kHz; pclk: 17.75 MHz
|
||||
+Modeline "640x360R" 17.75 640 688 720 800 360 363 368 374 +hsync -vsync
|
||||
+
|
||||
+# 640x360 59.84 Hz (CVT 0.23M9) hsync: 22.50 kHz; pclk: 18.00 MHz
|
||||
+Modeline "640x360" 18.00 640 664 720 800 360 363 368 376 -hsync +vsync
|
||||
+
|
||||
+# 720x405 58.99 Hz (CVT 0.29M9-R) hsync: 24.72 kHz; pclk: 21.75 MHz
|
||||
+Modeline "720x405R" 21.75 720 768 800 880 405 408 413 419 +hsync -vsync
|
||||
+
|
||||
+# 720x405 59.51 Hz (CVT 0.29M9) hsync: 25.11 kHz; pclk: 22.50 MHz
|
||||
+Modeline "720x405" 22.50 720 744 808 896 405 408 413 422 -hsync +vsync
|
||||
+
|
||||
+# 864x486 59.57 Hz (CVT 0.42M9-R) hsync: 29.79 kHz; pclk: 30.50 MHz
|
||||
+Modeline "864x486R" 30.50 864 912 944 1024 486 489 494 500 +hsync -vsync
|
||||
+
|
||||
+# 864x486 59.92 Hz (CVT 0.42M9) hsync: 30.32 kHz; pclk: 32.50 MHz
|
||||
+Modeline "864x486" 32.50 864 888 968 1072 486 489 494 506 -hsync +vsync
|
||||
+
|
||||
+# 960x540 59.82 Hz (CVT 0.52M9-R) hsync: 33.26 kHz; pclk: 37.25 MHz
|
||||
+Modeline "960x540R" 37.25 960 1008 1040 1120 540 543 548 556 +hsync -vsync
|
||||
+
|
||||
+# 960x540 59.63 Hz (CVT 0.52M9) hsync: 33.51 kHz; pclk: 40.75 MHz
|
||||
+Modeline "960x540" 40.75 960 992 1088 1216 540 543 548 562 -hsync +vsync
|
||||
+
|
||||
+# 1024x576 59.82 Hz (CVT 0.59M9-R) hsync: 35.47 kHz; pclk: 42.00 MHz
|
||||
+Modeline "1024x576R" 42.00 1024 1072 1104 1184 576 579 584 593 +hsync -vsync
|
||||
+
|
||||
+# 1024x576 59.90 Hz (CVT 0.59M9) hsync: 35.88 kHz; pclk: 46.50 MHz
|
||||
+Modeline "1024x576" 46.50 1024 1064 1160 1296 576 579 584 599 -hsync +vsync
|
||||
+
|
||||
+# 1280x720 59.74 Hz (CVT 0.92M9-R) hsync: 44.27 kHz; pclk: 63.75 MHz
|
||||
+Modeline "1280x720R" 63.75 1280 1328 1360 1440 720 723 728 741 +hsync -vsync
|
||||
+
|
||||
+# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz
|
||||
+Modeline "1280x720" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
|
||||
+
|
||||
+# 1368x768 59.85 Hz (CVT) hsync: 47.28 kHz; pclk: 72.25 MHz
|
||||
+Modeline "1368x768R" 72.25 1368 1416 1448 1528 768 771 781 790 +hsync -vsync
|
||||
+
|
||||
+# 1368x768 59.88 Hz (CVT) hsync: 47.79 kHz; pclk: 85.25 MHz
|
||||
+Modeline "1368x768" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
|
||||
+
|
||||
+# 1600x900 59.82 Hz (CVT 1.44M9-R) hsync: 55.40 kHz; pclk: 97.50 MHz
|
||||
+Modeline "1600x900R" 97.50 1600 1648 1680 1760 900 903 908 926 +hsync -vsync
|
||||
+
|
||||
+# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
|
||||
+Modeline "1600x900" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
|
||||
+
|
||||
+# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz
|
||||
+Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync
|
||||
+
|
||||
+# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
|
||||
+Modeline "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
|
||||
+
|
||||
+# 2048x1152 59.91 Hz (CVT 2.36M9-R) hsync: 70.99 kHz; pclk: 156.75 MHz
|
||||
+Modeline "2048x1152R" 156.75 2048 2096 2128 2208 1152 1155 1160 1185 +hsync -vsync
|
||||
+
|
||||
+# 2048x1152 59.90 Hz (CVT 2.36M9) hsync: 71.58 kHz; pclk: 197.00 MHz
|
||||
+Modeline "2048x1152" 197.00 2048 2184 2400 2752 1152 1155 1160 1195 -hsync +vsync
|
||||
+
|
||||
+# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
|
||||
+Modeline "2560x1440R" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
|
||||
+
|
||||
+# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
|
||||
+Modeline "2560x1440" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
|
||||
+
|
||||
+# 2880x1620 59.97 Hz (CVT 4.67M9-R) hsync: 99.92 kHz; pclk: 303.75 MHz
|
||||
+Modeline "2880x1620R" 303.75 2880 2928 2960 3040 1620 1623 1628 1666 +hsync -vsync
|
||||
+
|
||||
+# 2880x1620 59.96 Hz (CVT 4.67M9) hsync: 100.67 kHz; pclk: 396.25 MHz
|
||||
+Modeline "2880x1620" 396.25 2880 3096 3408 3936 1620 1623 1628 1679 -hsync +vsync
|
||||
+
|
||||
+# 3200x1800 59.94 Hz (CVT 5.76M9-R) hsync: 111.01 kHz; pclk: 373.00 MHz
|
||||
+Modeline "3200x1800R" 373.00 3200 3248 3280 3360 1800 1803 1808 1852 +hsync -vsync
|
||||
+
|
||||
+# 3200x1800 59.96 Hz (CVT 5.76M9) hsync: 111.82 kHz; pclk: 492.00 MHz
|
||||
+Modeline "3200x1800" 492.00 3200 3456 3800 4400 1800 1803 1808 1865 -hsync +vsync
|
||||
+
|
||||
+# 3840x2160 59.97 Hz (CVT 8.29M9-R) hsync: 133.25 kHz; pclk: 533.00 MHz
|
||||
+Modeline "3840x2160R" 533.00 3840 3888 3920 4000 2160 2163 2168 2222 +hsync -vsync
|
||||
+
|
||||
+# 3840x2160 59.98 Hz (CVT 8.29M9) hsync: 134.18 kHz; pclk: 712.75 MHz
|
||||
+Modeline "3840x2160" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync
|
||||
+
|
||||
+# 4096x2304 59.98 Hz (CVT 9.44M9-R) hsync: 142.15 kHz; pclk: 605.00 MHz
|
||||
+Modeline "4096x2304R" 605.00 4096 4144 4176 4256 2304 2307 2312 2370 +hsync -vsync
|
||||
+
|
||||
+# 4096x2304 59.99 Hz (CVT 9.44M9) hsync: 143.13 kHz; pclk: 813.00 MHz
|
||||
+Modeline "4096x2304" 813.00 4096 4440 4888 5680 2304 2307 2312 2386 -hsync +vsync
|
||||
+
|
||||
+# 5120x2880 59.99 Hz (CVT 14.75M9-R) hsync: 177.70 kHz; pclk: 938.25 MHz
|
||||
+Modeline "5120x2880R" 938.25 5120 5168 5200 5280 2880 2883 2888 2962 +hsync -vsync
|
||||
+
|
||||
+# 5120x2880 59.99 Hz (CVT 14.75M9) hsync: 178.88 kHz; pclk: 1276.50 MHz
|
||||
+Modeline "5120x2880" 1276.50 5120 5560 6128 7136 2880 2883 2888 2982 -hsync +vsync
|
||||
+
|
||||
+# 7680x4320 59.99 Hz (CVT 33.18M9-R) hsync: 266.55 kHz; pclk: 2089.75 MHz
|
||||
+Modeline "7680x4320R" 2089.75 7680 7728 7760 7840 4320 4323 4328 4443 +hsync -vsync
|
||||
+
|
||||
+# 7680x4320 59.99 Hz (CVT 33.18M9) hsync: 268.22 kHz; pclk: 2892.50 MHz
|
||||
+Modeline "7680x4320" 2892.50 7680 8376 9232 10784 4320 4323 4328 4471 -hsync +vsync
|
||||
+
|
||||
+# 15360x8640 59.99 Hz (CVT 132.71M9-R) hsync: 533.10 kHz; pclk: 8273.75 MHz
|
||||
+Modeline "15360x8640R" 8273.75 15360 15408 15440 15520 8640 8643 8648 8886 +hsync -vsync
|
||||
+
|
||||
+# 15360x8640 60.00 Hz (CVT 132.71M9) hsync: 536.27 kHz; pclk: 11669.25 MHz
|
||||
+Modeline "15360x8640" 11669.25 15360 16824 18560 21760 8640 8643 8648 8938 -hsync +vsync
|
||||
+
|
||||
+## 16:10 modelines generated by cvt
|
||||
+
|
||||
+# 1280x800 59.91 Hz (CVT 1.02MA-R) hsync: 49.31 kHz; pclk: 71.00 MHz
|
||||
+Modeline "1280x800R" 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync
|
||||
+
|
||||
+# 1280x800 59.81 Hz (CVT 1.02MA) hsync: 49.70 kHz; pclk: 83.50 MHz
|
||||
+Modeline "1280x800" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync
|
||||
+
|
||||
+# 1400x900 59.88 Hz (CVT) hsync: 55.45 kHz; pclk: 86.50 MHz
|
||||
+Modeline "1400x900R" 86.50 1400 1448 1480 1560 900 903 913 926 +hsync -vsync
|
||||
+
|
||||
+# 1400x900 59.96 Hz (CVT) hsync: 56.01 kHz; pclk: 103.50 MHz
|
||||
+Modeline "1400x900" 103.50 1400 1480 1624 1848 900 903 913 934 -hsync +vsync
|
||||
+
|
||||
+# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz
|
||||
+Modeline "1680x1050R" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync
|
||||
+
|
||||
+# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
|
||||
+Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
|
||||
+
|
||||
+# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz
|
||||
+Modeline "1920x1200R" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync
|
||||
+
|
||||
+# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
|
||||
+Modeline "1920x1200" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync
|
||||
+
|
||||
+# 2560x1600 59.97 Hz (CVT 4.10MA-R) hsync: 98.71 kHz; pclk: 268.50 MHz
|
||||
+Modeline "2560x1600R" 268.50 2560 2608 2640 2720 1600 1603 1609 1646 +hsync -vsync
|
||||
+
|
||||
+# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
|
||||
+Modeline "2560x1600" 348.50 2560 2760 3032 3504 1600 1603 1609 1658 -hsync +vsync
|
||||
+
|
||||
--
|
||||
2.15.1
|
||||
|
@ -15,8 +15,8 @@ index 461e818..c0ce3b8 100644
|
||||
--- a/hw/xfree86/Makefile.am
|
||||
+++ b/hw/xfree86/Makefile.am
|
||||
@@ -87,6 +87,7 @@ if SUID_WRAPPER
|
||||
wrapdir = $(SUID_WRAPPER_DIR)
|
||||
wrap_PROGRAMS = Xorg.wrap
|
||||
wrapexecdir = $(SUID_WRAPPER_DIR)
|
||||
wrapexec_PROGRAMS = Xorg.wrap
|
||||
Xorg_wrap_SOURCES = xorg-wrapper.c
|
||||
+Xorg_wrap_CFLAGS = $(AM_CFLAGS) -pie -fpie
|
||||
endif
|
||||
|
@ -1,33 +0,0 @@
|
||||
Author: Chris Lamb <chris@chris-lamb.co.uk>
|
||||
Date: Thu, 20 Jul 2017 15:42:15 +0100
|
||||
Subject: configure.ac: Make BUILD_{DATE,TIME} respect SOURCE_DATE_EPOCH
|
||||
References: boo#1047218
|
||||
|
||||
upstreaming in generalized form
|
||||
https://lists.x.org/pipermail/xorg-devel/2017-July/054127.html from lamby
|
||||
|
||||
still not in 2018-02-20 with 1.19.6
|
||||
|
||||
Signed-off-by: Bernhard M. Wiedemann <bwiedemann suse de>
|
||||
|
||||
Index: xorg-server-1.19.3/configure.ac
|
||||
===================================================================
|
||||
--- xorg-server-1.19.3.orig/configure.ac
|
||||
+++ xorg-server-1.19.3/configure.ac
|
||||
@@ -2555,9 +2555,14 @@ AC_DEFINE_DIR(PROJECTROOT, prefix, [Over
|
||||
AC_DEFINE_DIR(SYSCONFDIR, sysconfdir, [sysconfdir])
|
||||
|
||||
AC_SUBST([RELEASE_DATE])
|
||||
-BUILD_DATE="`date +'%Y%m%d'`"
|
||||
+if test "x$SOURCE_DATE_EPOCH" = "x"; then
|
||||
+ BUILD_DATE="`date +'%Y%m%d'`"
|
||||
+ BUILD_TIME="`date +'1%H%M%S'`"
|
||||
+else
|
||||
+ BUILD_DATE="`date --utc --date="@$SOURCE_DATE_EPOCH" +'%Y%m%d'`"
|
||||
+ BUILD_TIME="`date --utc --date="@$SOURCE_DATE_EPOCH" +'1%H%M%S'`"
|
||||
+fi
|
||||
AC_SUBST([BUILD_DATE])
|
||||
-BUILD_TIME="`date +'1%H%M%S'`"
|
||||
AC_SUBST([BUILD_TIME])
|
||||
|
||||
DIX_CFLAGS="-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"
|
1
xkb-tmpfiles.conf
Normal file
1
xkb-tmpfiles.conf
Normal file
@ -0,0 +1 @@
|
||||
C /var/lib/xkb/compiled/README.compiled 0644 - - - /usr/share/factory/var/lib/xkb/compiled/README.compiled
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197
|
||||
size 5984528
|
3
xorg-server-1.20.0.tar.bz2
Normal file
3
xorg-server-1.20.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9d967d185f05709274ee0c4f861a4672463986e550ca05725ce27974f550d3e6
|
||||
size 6096838
|
@ -1,4 +1,4 @@
|
||||
Provides: X11_ABI_XINPUT = 24.1
|
||||
Provides: X11_ABI_VIDEODRV = 23.0
|
||||
Provides: X11_ABI_VIDEODRV = 24.0
|
||||
Provides: X11_ABI_ANSIC = 0.4
|
||||
Provides: X11_ABI_EXTENSION = 10.0
|
||||
|
@ -1,3 +1,83 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 19 14:12:01 CEST 2018 - tiwai@suse.de
|
||||
|
||||
- u_modesetting-Fix-cirrus-24bpp-breakage.patch
|
||||
* Fix breakage of cirrus 24bpp support on modesetting driver
|
||||
(bsc#1101699)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 10 12:03:43 UTC 2018 - fcrozat@suse.com
|
||||
|
||||
- Remove /var/lib/X11 and its symlink, it is no longer needed and
|
||||
doesn't work with transaction-updates (FATE#325524).
|
||||
- Move README.compiled to another location and use tmpfiles to
|
||||
copy it at runtime.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 2 12:46:54 UTC 2018 - sndirsch@suse.com
|
||||
|
||||
- U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
|
||||
* fixes rotation in modesetting driver (regression with
|
||||
xorg-server 1.20.0, fdo#106715)
|
||||
* might also fix boo#1099812 ...
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 26 07:51:15 UTC 2018 - msrb@suse.com
|
||||
|
||||
- U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
|
||||
* Fix heap overflow caused by unexpected optimization, which was
|
||||
possible because of relying on undefined behavior.
|
||||
(boo#1099113)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 20 15:40:58 UTC 2018 - sndirsch@suse.com
|
||||
|
||||
- U_Xext-shm-Refuse-to-work-for-remote-clients.patch
|
||||
* Avoid access to System V shared memory segment on the X server
|
||||
side for clients forwarded via SSH. Also prevent them from
|
||||
hanging while waiting for the reply from the ShmCreateSegment
|
||||
request. (boo#1097227)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 22 07:47:26 UTC 2018 - msrb@suse.com
|
||||
|
||||
- Remove n_add-dummy-xf86DisableRandR.patch
|
||||
* After upgrade to 1.20.0 the API officially no longer includes
|
||||
xf86DisableRandR, so there is no need to add it back.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat May 12 15:03:54 UTC 2018 - tobias.johannes.klausmann@mni.thm.de
|
||||
|
||||
- Update to version 1.20.0:
|
||||
New features:
|
||||
+ RANDR 1.6, which enables leasing RANDR resources to a client for its
|
||||
exclusive use (e.g. head mounted displays)
|
||||
+ Depth 30 support in glamor and the modesetting driver
|
||||
+ A meson-based build system, parallel to autotools
|
||||
+ Pageflipping support for PRIME output sinks
|
||||
+ OutputClass device matching for xorg.conf
|
||||
+ Input grab and tablet support in Xwayland
|
||||
- Remove upstream patches:
|
||||
+ u_xorg-x11-server-reproducible.patch
|
||||
Solved slightly different
|
||||
+ u_os-inputthread-Force-unlock-when-stopping-thread.patch
|
||||
+ u_xfree86-add-default-modes-for-16-9-and-16-10.patch
|
||||
+ U_xwayland-Don-t-process-cursor-warping-without-an-xwl.patch
|
||||
+ U_xwayland-Give-up-cleanly-on-Wayland-socket-errors.patch
|
||||
+ U_xwayland-avoid-race-condition-on-new-keymap.patch
|
||||
+ U_xwayland-remove-dirty-window-unconditionally-on-unre.patch
|
||||
+ U_0001-animcur-Use-fixed-size-screen-private.patch
|
||||
+ U_0002-animcur-Return-the-next-interval-directly-from-the-t.patch
|
||||
+ U_0003-animcur-Run-the-timer-from-the-device-not-the-screen.patch
|
||||
+ U_0004-animcur-Fix-transitions-between-animated-cursors.patch
|
||||
+ U_xfree86-Remove-broken-RANDR-disabling-logic-v4.patch
|
||||
- Adapt patches to work with the new release:
|
||||
+ N_zap_warning_xserver.diff
|
||||
+ N_fix_fglrx_screendepth_issue.patch
|
||||
+ n_xserver-optimus-autoconfig-hack.patch
|
||||
+ u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch
|
||||
+ u_xorg-wrapper-build-Build-position-independent-code.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 17 10:30:46 UTC 2018 - msrb@suse.com
|
||||
|
||||
|
@ -46,7 +46,7 @@
|
||||
%endif
|
||||
|
||||
Name: xorg-x11-server
|
||||
Version: 1.19.6
|
||||
Version: 1.20.0
|
||||
Release: 0
|
||||
Url: http://xorg.freedesktop.org/
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
@ -62,6 +62,7 @@ Source3: xorgcfg.tar.bz2
|
||||
Source4: xorg-backtrace
|
||||
Source5: 50-extensions.conf
|
||||
Source6: modesetting.ids
|
||||
Source7: xkb-tmpfiles.conf
|
||||
# RPM Macros to be installed. The ABI Versions will be injected by configure.
|
||||
Source90: xorg-x11-server.macros.in
|
||||
# Source91 and Source99 are used to ensure proper ABI provides.
|
||||
@ -127,6 +128,7 @@ BuildRequires: pkgconfig(xfixes)
|
||||
BuildRequires: pkgconfig(xfont2)
|
||||
BuildRequires: pkgconfig(xi) >= 1.2.99.1
|
||||
BuildRequires: pkgconfig(xineramaproto)
|
||||
BuildRequires: pkgconfig(xkbcomp)
|
||||
BuildRequires: pkgconfig(xkbfile)
|
||||
BuildRequires: pkgconfig(xmu)
|
||||
BuildRequires: pkgconfig(xorg-macros)
|
||||
@ -198,6 +200,7 @@ Patch9: u_xorg-wrapper-build-Build-position-independent-code.patch
|
||||
Patch100: u_01-Improved-ConfineToShape.patch
|
||||
Patch101: u_02-DIX-ConfineTo-Don-t-bother-about-the-bounding-box-when-grabbing-a-shaped-window.patch
|
||||
# PATCH-FIX-UPSTREAM u_x86emu-include-order.patch schwab@suse.de -- Change include order to avoid conflict with system header, remove duplicate definitions
|
||||
|
||||
Patch104: u_xorg-server-xdmcp.patch
|
||||
Patch112: u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch
|
||||
|
||||
@ -212,13 +215,6 @@ Patch209: u_pci-primary-Fix-up-primary-PCI-device-detection-for-the-platfr
|
||||
Patch210: u_os-connections-Check-for-stale-FDs.patch
|
||||
|
||||
Patch215: u_Use-better-fallbacks-to-generate-cookies-if-arc4rand.patch
|
||||
Patch216: u_os-inputthread-Force-unlock-when-stopping-thread.patch
|
||||
Patch217: u_xfree86-add-default-modes-for-16-9-and-16-10.patch
|
||||
|
||||
Patch300: U_xwayland-Don-t-process-cursor-warping-without-an-xwl.patch
|
||||
Patch301: U_xwayland-Give-up-cleanly-on-Wayland-socket-errors.patch
|
||||
Patch302: U_xwayland-avoid-race-condition-on-new-keymap.patch
|
||||
Patch303: U_xwayland-remove-dirty-window-unconditionally-on-unre.patch
|
||||
|
||||
Patch1000: n_xserver-optimus-autoconfig-hack.patch
|
||||
|
||||
@ -226,17 +222,13 @@ Patch1162: b_cache-xkbcomp-output-for-fast-start-up.patch
|
||||
Patch1211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
|
||||
Patch1222: b_sync-fix.patch
|
||||
|
||||
Patch1301: U_0001-animcur-Use-fixed-size-screen-private.patch
|
||||
Patch1302: U_0002-animcur-Return-the-next-interval-directly-from-the-t.patch
|
||||
Patch1303: U_0003-animcur-Run-the-timer-from-the-device-not-the-screen.patch
|
||||
Patch1304: U_0004-animcur-Fix-transitions-between-animated-cursors.patch
|
||||
Patch1305: u_xorg-x11-server-reproducible.patch
|
||||
|
||||
Patch1400: U_xfree86-Remove-broken-RANDR-disabling-logic-v4.patch
|
||||
Patch1401: u_randr-Do-not-crash-if-slave-screen-does-not-have-pro.patch
|
||||
Patch1402: n_add-dummy-xf86DisableRandR.patch
|
||||
|
||||
Patch1500: U_glx-Do-not-call-into-Composite-if-it-is-disabled.patch
|
||||
Patch1500: U_Xext-shm-Refuse-to-work-for-remote-clients.patch
|
||||
Patch1501: U_xkb-Fix-heap-overflow-caused-by-optimized-away-min.patch
|
||||
|
||||
Patch1600: U_modesetting-use-drmmode_bo_import-for-rotate_fb.patch
|
||||
Patch1601: u_modesetting-Fix-cirrus-24bpp-breakage.patch
|
||||
|
||||
%description
|
||||
This package contains the X.Org Server.
|
||||
@ -347,6 +339,7 @@ sh %{SOURCE92} --verify . %{SOURCE91}
|
||||
#
|
||||
%patch100 -p1
|
||||
#%patch101 -p1
|
||||
|
||||
%patch104 -p1
|
||||
|
||||
%patch112 -p1
|
||||
@ -364,8 +357,6 @@ sh %{SOURCE92} --verify . %{SOURCE91}
|
||||
#%patch210 -p1
|
||||
|
||||
%patch215 -p1
|
||||
%patch216 -p1
|
||||
%patch217 -p1
|
||||
|
||||
%patch1000 -p1
|
||||
|
||||
@ -376,22 +367,13 @@ sh %{SOURCE92} --verify . %{SOURCE91}
|
||||
### patch222 might not be applicable anymore
|
||||
#%patch1222 -p1
|
||||
|
||||
%patch300 -p1
|
||||
%patch301 -p1
|
||||
%patch302 -p1
|
||||
%patch303 -p1
|
||||
|
||||
%patch1301 -p1
|
||||
%patch1302 -p1
|
||||
%patch1303 -p1
|
||||
%patch1304 -p1
|
||||
%patch1305 -p1
|
||||
|
||||
%patch1400 -p1
|
||||
%patch1401 -p1
|
||||
%patch1402 -p1
|
||||
|
||||
%patch1500 -p1
|
||||
%patch1501 -p1
|
||||
|
||||
%patch1600 -p1
|
||||
%patch1601 -p1
|
||||
|
||||
%build
|
||||
test -e source-file-list || \
|
||||
@ -469,15 +451,18 @@ find %{buildroot}%{_libdir}/xorg/modules/ -name "*.la" | \
|
||||
xargs rm
|
||||
install -m 644 hw/xfree86/parser/{xf86Parser.h,xf86Optrec.h} \
|
||||
%{buildroot}%{_includedir}/xorg
|
||||
# FATE#325524
|
||||
mkdir -p %{buildroot}%{_datadir}/factory/%{_localstatedir}/lib/xkb/compiled
|
||||
mv %{buildroot}%{_localstatedir}/lib/xkb/compiled/README.compiled %{buildroot}%{_datadir}/factory/%{_localstatedir}/lib/xkb/compiled/
|
||||
mkdir -p %{buildroot}%{_tmpfilesdir}
|
||||
install -m 644 %{S:7} %{buildroot}%{_tmpfilesdir}/xkb.conf
|
||||
# bnc #632737
|
||||
chmod u-s %{buildroot}%{_bindir}/Xorg
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/X11
|
||||
%if 0%{?pci_ids_dir:1}
|
||||
%__mkdir_p %{buildroot}%{pci_ids_dir}
|
||||
install -m 644 %{S:6} %{buildroot}%{pci_ids_dir}
|
||||
%endif
|
||||
ln -snf ../../../usr/bin/Xorg %{buildroot}%{_localstatedir}/lib/X11/X
|
||||
ln -snf ../../var/lib/X11/X %{buildroot}%{_bindir}/X
|
||||
ln -snf Xorg %{buildroot}%{_bindir}/X
|
||||
%if 0%{?suse_version} > 1120
|
||||
# get rid of evdev config file, since it's meanwhile shipped with
|
||||
# evdev driver itself (since 2.10.0)
|
||||
@ -521,6 +506,7 @@ mkdir -p %{buildroot}/usr/src/xserver
|
||||
xargs cp --parents --target-directory=%{buildroot}/usr/src/xserver < source-file-list
|
||||
|
||||
%post
|
||||
%tmpfiles_create xbb.conf
|
||||
%ifnarch s390 s390x
|
||||
%{fillup_only -an displaymanager}
|
||||
# Move SaX2 generated xorg.conf file to xorg.conf.sle11
|
||||
@ -578,12 +564,12 @@ fi
|
||||
%dir %{pci_ids_dir}
|
||||
%{pci_ids_dir}/modesetting.ids
|
||||
%endif
|
||||
%{_tmpfilesdir}/xkb.conf
|
||||
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-quirks.conf
|
||||
%config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/50-extensions.conf
|
||||
%dir %{_datadir}/X11/xorg.conf.d
|
||||
%{_datadir}/X11/xorg.conf.d/10-*.conf
|
||||
%endif
|
||||
%dir %{_localstatedir}/lib/X11
|
||||
%endif
|
||||
%dir %{_localstatedir}/lib/xkb
|
||||
%dir %{_localstatedir}/lib/xkb/compiled
|
||||
@ -593,7 +579,12 @@ fi
|
||||
%exclude %{_mandir}/man1/Xdmx.1*
|
||||
%exclude %{_mandir}/man1/Xephyr.1*
|
||||
%exclude %{_mandir}/man1/Xnest.1*
|
||||
%{_localstatedir}/lib/xkb/compiled/README.compiled
|
||||
%dir %{_datadir}/factory
|
||||
%dir %{_datadir}/factory/var
|
||||
%dir %{_datadir}/factory/var/lib
|
||||
%dir %{_datadir}/factory/var/lib/xkb
|
||||
%dir %{_datadir}/factory/var/lib/xkb/compiled
|
||||
%{_datadir}/factory/%{_localstatedir}/lib/xkb/compiled/README.compiled
|
||||
%ifnarch s390 s390x
|
||||
%{_bindir}/Xorg
|
||||
%if 0%{?build_suid_wrapper} == 1
|
||||
@ -607,7 +598,6 @@ fi
|
||||
%{_mandir}/man4/*
|
||||
%{_mandir}/man5/*
|
||||
%{_fillupdir}/sysconfig.displaymanager-%{name}
|
||||
%{_localstatedir}/lib/X11/X
|
||||
%if 0%{?suse_version} >= 1315
|
||||
%ghost %{_sysconfdir}/alternatives/libglx.so
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user