import xorg-x11-server-1.20.8-3.el8
This commit is contained in:
parent
8886b21e71
commit
6f5d8f0df7
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/xorg-server-1.20.6.tar.bz2
|
||||
SOURCES/xorg-server-1.20.8.tar.bz2
|
||||
|
@ -1 +1 @@
|
||||
59473e72136113f3a35b1ab5a5cfcbcad955b660 SOURCES/xorg-server-1.20.6.tar.bz2
|
||||
077d081f912faf11c87ea1c9d0e29490961b0cd4 SOURCES/xorg-server-1.20.8.tar.bz2
|
||||
|
@ -1,59 +0,0 @@
|
||||
From 58d357db299116657b468db9565c0e431bb7ea29 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Tue, 26 Nov 2019 17:14:46 +0100
|
||||
Subject: [PATCH xserver 1/3] modesetting: Call glamor_finish from
|
||||
drmmode_crtc_set_mode
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This makes sure any pending drawing to a new scanout buffer will be
|
||||
visible from the start.
|
||||
|
||||
This makes the finish call in drmmode_copy_fb superfluous, so remove it.
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
(Cherry picked from commit c66c548eabf06835cb0cb906598fb87c7bb30cf4)
|
||||
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/drmmode_display.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
index 336f7686e..8786d13a3 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
@@ -754,6 +754,7 @@ drmmode_crtc_set_mode(xf86CrtcPtr crtc, Bool test_only)
|
||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
|
||||
drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
|
||||
drmmode_ptr drmmode = drmmode_crtc->drmmode;
|
||||
+ ScreenPtr screen = crtc->scrn->pScreen;
|
||||
drmModeModeInfo kmode;
|
||||
int output_count = 0;
|
||||
uint32_t *output_ids = NULL;
|
||||
@@ -764,6 +765,12 @@ drmmode_crtc_set_mode(xf86CrtcPtr crtc, Bool test_only)
|
||||
if (!drmmode_crtc_get_fb_id(crtc, &fb_id, &x, &y))
|
||||
return 1;
|
||||
|
||||
+#ifdef GLAMOR_HAS_GBM
|
||||
+ /* Make sure any pending drawing will be visible in a new scanout buffer */
|
||||
+ if (drmmode->glamor)
|
||||
+ glamor_finish(screen);
|
||||
+#endif
|
||||
+
|
||||
if (ms->atomic_modeset) {
|
||||
drmModeAtomicReq *req = drmModeAtomicAlloc();
|
||||
Bool active;
|
||||
@@ -1452,8 +1459,6 @@ drmmode_copy_fb(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
|
||||
|
||||
FreeScratchGC(gc);
|
||||
|
||||
- glamor_finish(pScreen);
|
||||
-
|
||||
pScreen->canDoBGNoneRoot = TRUE;
|
||||
|
||||
if (drmmode->fbcon_pixmap)
|
||||
--
|
||||
2.24.0
|
||||
|
@ -1,52 +0,0 @@
|
||||
From a22a81a0de76b96b01f32f59fd2a4b4af675d9b1 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Fri, 5 Oct 2018 15:12:18 -0400
|
||||
Subject: [PATCH] modesetting: Hide atomic behind Option "Atomic" "[boolean]"
|
||||
|
||||
You can turn it on if the kernel driver supports it and you ask for it
|
||||
explicitly, but right now it's too fragile.
|
||||
|
||||
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/driver.c | 5 ++++-
|
||||
hw/xfree86/drivers/modesetting/driver.h | 1 +
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||
index 24311c1..4fc62e4 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||
@@ -131,6 +131,7 @@ static const OptionInfoRec Options[] = {
|
||||
{OPTION_PAGEFLIP, "PageFlip", OPTV_BOOLEAN, {0}, FALSE},
|
||||
{OPTION_ZAPHOD_HEADS, "ZaphodHeads", OPTV_STRING, {0}, FALSE},
|
||||
{OPTION_DOUBLE_SHADOW, "DoubleShadow", OPTV_BOOLEAN, {0}, FALSE},
|
||||
+ {OPTION_ATOMIC, "Atomic", OPTV_BOOLEAN, {0}, FALSE},
|
||||
{-1, NULL, OPTV_NONE, {0}, FALSE}
|
||||
};
|
||||
|
||||
@@ -1061,7 +1062,9 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
}
|
||||
|
||||
ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
|
||||
- ms->atomic_modeset = (ret == 0);
|
||||
+ if ((ms->atomic_modeset = (ret == 0)))
|
||||
+ ms->atomic_modeset = xf86ReturnOptValBool(ms->drmmode.Options,
|
||||
+ OPTION_ATOMIC, FALSE);
|
||||
|
||||
ms->kms_has_modifiers = FALSE;
|
||||
ret = drmGetCap(ms->fd, DRM_CAP_ADDFB2_MODIFIERS, &value);
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.h b/hw/xfree86/drivers/modesetting/driver.h
|
||||
index c8db4b8..46ba78a 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.h
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.h
|
||||
@@ -51,6 +51,7 @@ typedef enum {
|
||||
OPTION_PAGEFLIP,
|
||||
OPTION_ZAPHOD_HEADS,
|
||||
OPTION_DOUBLE_SHADOW,
|
||||
+ OPTION_ATOMIC,
|
||||
} modesettingOpts;
|
||||
|
||||
typedef struct
|
||||
--
|
||||
2.19.0
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 41e265988a0b6ec456ddd562253e0f82a7c2ede2 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Fri, 27 Sep 2019 11:43:52 -0400
|
||||
Subject: [PATCH xserver] modesetting: Reduce "glamor initialization failed"
|
||||
message to X_INFO
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This might be an error or not, for example refusing to work on llvmpipe
|
||||
is normal and expected. glamor_egl_init() will print X_ERROR messages if
|
||||
appropriate, so we don't need to here.
|
||||
|
||||
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
|
||||
(cherry picked from commit cbdde938cbaf604741cd057fac743859ada342ec)
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/driver.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||
index 2aaea5f7d..783d53eaa 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||
@@ -772,7 +772,7 @@ try_enable_glamor(ScrnInfoPtr pScrn)
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "glamor initialized\n");
|
||||
ms->drmmode.glamor = TRUE;
|
||||
} else {
|
||||
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
|
||||
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
|
||||
"glamor initialization failed\n");
|
||||
}
|
||||
} else {
|
||||
--
|
||||
2.26.2
|
||||
|
@ -0,0 +1,37 @@
|
||||
From f32c851a0ba41f5d8d0f8c869bc394858de721df Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Thu, 25 Jun 2020 18:09:27 +0200
|
||||
Subject: [PATCH xserver 1/4] present/wnmd: Keep pixmap pointer in
|
||||
present_wnmd_clear_window_flip
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The comment was incorrect: Any reference held by the window (see
|
||||
present_wnmd_execute) is in addition to the one in struct present_vblank
|
||||
(see present_vblank_create). So if we don't drop the latter, the pixmap
|
||||
will be leaked.
|
||||
|
||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
||||
(cherry picked from commit bc9dd1c71c3722284ffaa7183f4119151b25a44f)
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
present/present_screen.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/present/present_screen.c b/present/present_screen.c
|
||||
index c7e37c5fd..c435f55f4 100644
|
||||
--- a/present/present_screen.c
|
||||
+++ b/present/present_screen.c
|
||||
@@ -122,8 +122,6 @@ present_wnmd_clear_window_flip(WindowPtr window)
|
||||
|
||||
xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) {
|
||||
present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
|
||||
- /* The pixmap will be destroyed by freeing the window resources. */
|
||||
- vblank->pixmap = NULL;
|
||||
present_vblank_destroy(vblank);
|
||||
}
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,38 +0,0 @@
|
||||
From 6d0aaa3279d4671c4c17fdf9c049fc03b8ba273d Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Thu, 11 Oct 2018 15:48:17 +0200
|
||||
Subject: [PATCH xserver] xwayland: Disable Present support
|
||||
|
||||
The addition of Present support in xserver-1.20.x introduced some
|
||||
instability and hard to reproduce bugs which can cause Xwayland to crash
|
||||
and take the entire user session with it.
|
||||
|
||||
Disable Present in support until it's stabilized.
|
||||
|
||||
This patch is a temporary workaround, it is not meant to be submitted
|
||||
upstream.
|
||||
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
---
|
||||
hw/xwayland/xwayland.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
|
||||
index 605c9f56b..cb29ce81c 100644
|
||||
--- a/hw/xwayland/xwayland.c
|
||||
+++ b/hw/xwayland/xwayland.c
|
||||
@@ -1071,9 +1071,10 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
|
||||
xwl_screen->glamor = 0;
|
||||
}
|
||||
}
|
||||
-
|
||||
+#if 0 /* Disable Present support in Xwayland for now */
|
||||
if (xwl_screen->glamor && xwl_screen->rootless)
|
||||
xwl_screen->present = xwl_present_init(pScreen);
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
if (!xwl_screen->glamor) {
|
||||
--
|
||||
2.19.1
|
||||
|
@ -0,0 +1,45 @@
|
||||
From 732507ed3255dff3970c5f92bd6ea13bf877e637 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Thu, 25 Jun 2020 18:11:31 +0200
|
||||
Subject: [PATCH xserver 2/4] present/wnmd: Free flip_queue entries in
|
||||
present_wnmd_clear_window_flip
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When present_wnmd_clear_window_flip is done, present_destroy_window
|
||||
frees struct present_window_priv, and the events in the flip queue
|
||||
become unreachable. So if we don't free them first, they're leaked.
|
||||
|
||||
Also drop the call to present_wnmd_set_abort_flip, which just sets a
|
||||
flag in struct present_window_priv and thus can't have any observable
|
||||
effect after present_destroy_window.
|
||||
|
||||
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1042
|
||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
||||
(cherry picked from commit 1bdedc8dbb9d035b85444c2558a137470ff52113)
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
present/present_screen.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/present/present_screen.c b/present/present_screen.c
|
||||
index c435f55f4..bfd30b8ba 100644
|
||||
--- a/present/present_screen.c
|
||||
+++ b/present/present_screen.c
|
||||
@@ -115,9 +115,9 @@ present_wnmd_clear_window_flip(WindowPtr window)
|
||||
present_window_priv_ptr window_priv = present_window_priv(window);
|
||||
present_vblank_ptr vblank, tmp;
|
||||
|
||||
- if (window_priv->flip_pending) {
|
||||
- present_wnmd_set_abort_flip(window);
|
||||
- window_priv->flip_pending->window = NULL;
|
||||
+ xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->flip_queue, event_queue) {
|
||||
+ present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
|
||||
+ present_vblank_destroy(vblank);
|
||||
}
|
||||
|
||||
xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) {
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,37 +0,0 @@
|
||||
From 532f1618a0600e8601fd42f40eb628e4794300b2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Tue, 26 Nov 2019 17:16:37 +0100
|
||||
Subject: [PATCH xserver 2/3] xfree86/modes: Call xf86RotateRedisplay from
|
||||
xf86CrtcRotate
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
If a new rotate buffer was allocated. This makes sure the new buffer
|
||||
has valid transformed contents when it starts being displayed.
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
(Cherry picked from commit 327df450ffcf5bda5b4254db0208d355860d1010)
|
||||
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
hw/xfree86/modes/xf86Rotate.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
|
||||
index a8f1e615c..05944cfcb 100644
|
||||
--- a/hw/xfree86/modes/xf86Rotate.c
|
||||
+++ b/hw/xfree86/modes/xf86Rotate.c
|
||||
@@ -485,6 +485,9 @@ xf86CrtcRotate(xf86CrtcPtr crtc)
|
||||
|
||||
if (damage)
|
||||
xf86CrtcDamageShadow(crtc);
|
||||
+ else if (crtc->rotatedData && !crtc->rotatedPixmap)
|
||||
+ /* Make sure the new rotate buffer has valid transformed contents */
|
||||
+ xf86RotateRedisplay(pScreen);
|
||||
|
||||
/* All done */
|
||||
return TRUE;
|
||||
--
|
||||
2.24.0
|
||||
|
@ -1,55 +0,0 @@
|
||||
From 5489029ff6508b37d71d47d905d744c436a49563 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Tue, 26 Nov 2019 17:17:12 +0100
|
||||
Subject: [PATCH xserver 3/3] modesetting: Clear new screen pixmap storage on
|
||||
RandR resize
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fixes random garbage being visible intermittently.
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
(Cherry picked from commit 9ba13bac9dd076f166ff0d063fc144b904a40d12)
|
||||
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/drmmode_display.c | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
index 8786d13a3..eca058258 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
@@ -1795,6 +1795,19 @@ drmmode_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr ppix)
|
||||
&drmmode_crtc->prime_pixmap);
|
||||
}
|
||||
|
||||
+static void
|
||||
+drmmode_clear_pixmap(PixmapPtr pixmap)
|
||||
+{
|
||||
+ ScreenPtr screen = pixmap->drawable.pScreen;
|
||||
+ GCPtr gc;
|
||||
+
|
||||
+ gc = GetScratchGC(pixmap->drawable.depth, screen);
|
||||
+ if (gc) {
|
||||
+ miClearDrawable(&pixmap->drawable, gc);
|
||||
+ FreeScratchGC(gc);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void *
|
||||
drmmode_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
|
||||
{
|
||||
@@ -3179,6 +3192,8 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height)
|
||||
if (!drmmode_glamor_handle_new_screen_pixmap(drmmode))
|
||||
goto fail;
|
||||
|
||||
+ drmmode_clear_pixmap(ppix);
|
||||
+
|
||||
for (i = 0; i < xf86_config->num_crtc; i++) {
|
||||
xf86CrtcPtr crtc = xf86_config->crtc[i];
|
||||
|
||||
--
|
||||
2.24.0
|
||||
|
@ -0,0 +1,94 @@
|
||||
From 99e9854c5fab7114b26c272088d9202548da55bf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Fri, 19 Jun 2020 18:14:35 +0200
|
||||
Subject: [PATCH xserver 3/4] xwayland: Always use xwl_present_free_event for
|
||||
freeing Present events
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Minor cleanup, and will make the next change simpler. No functional
|
||||
change intended.
|
||||
|
||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
||||
(cherry picked from commit 1beffba699e2cc3f23039d2177c025bc127966de)
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
hw/xwayland/xwayland-present.c | 27 ++++++++++++---------------
|
||||
1 file changed, 12 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 5ba7dce08..492e4a876 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -111,6 +111,13 @@ xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
|
||||
}
|
||||
}
|
||||
|
||||
+static void
|
||||
+xwl_present_free_event(struct xwl_present_event *event)
|
||||
+{
|
||||
+ xorg_list_del(&event->list);
|
||||
+ free(event);
|
||||
+}
|
||||
+
|
||||
void
|
||||
xwl_present_cleanup(WindowPtr window)
|
||||
{
|
||||
@@ -128,17 +135,15 @@ xwl_present_cleanup(WindowPtr window)
|
||||
}
|
||||
|
||||
/* Clear remaining events */
|
||||
- xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list) {
|
||||
- xorg_list_del(&event->list);
|
||||
- free(event);
|
||||
- }
|
||||
+ xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list)
|
||||
+ xwl_present_free_event(event);
|
||||
|
||||
/* Clear remaining buffer releases and inform Present about free ressources */
|
||||
event = xwl_present_window->sync_flip;
|
||||
xwl_present_window->sync_flip = NULL;
|
||||
if (event) {
|
||||
if (event->buffer_released) {
|
||||
- free(event);
|
||||
+ xwl_present_free_event(event);
|
||||
} else {
|
||||
event->pending = FALSE;
|
||||
event->abort = TRUE;
|
||||
@@ -160,13 +165,6 @@ xwl_present_cleanup(WindowPtr window)
|
||||
free(xwl_present_window);
|
||||
}
|
||||
|
||||
-static void
|
||||
-xwl_present_free_event(struct xwl_present_event *event)
|
||||
-{
|
||||
- xorg_list_del(&event->list);
|
||||
- free(event);
|
||||
-}
|
||||
-
|
||||
static void
|
||||
xwl_present_buffer_release(void *data, struct wl_buffer *buffer)
|
||||
{
|
||||
@@ -216,7 +214,7 @@ xwl_present_msc_bump(struct xwl_present_window *xwl_present_window)
|
||||
/* If the buffer was already released, clean up now */
|
||||
present_wnmd_event_notify(xwl_present_window->window, event->event_id,
|
||||
xwl_present_window->ust, msc);
|
||||
- free(event);
|
||||
+ xwl_present_free_event(event);
|
||||
} else {
|
||||
xorg_list_add(&event->list, &xwl_present_window->release_queue);
|
||||
}
|
||||
@@ -392,8 +390,7 @@ xwl_present_abort_vblank(WindowPtr present_window,
|
||||
|
||||
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list) {
|
||||
if (event->event_id == event_id) {
|
||||
- xorg_list_del(&event->list);
|
||||
- free(event);
|
||||
+ xwl_present_free_event(event);
|
||||
return;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
@ -0,0 +1,77 @@
|
||||
From 1466a4fdfa8156dd4fd8b6ee6acd1b44f72ee3b1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
|
||||
Date: Fri, 19 Jun 2020 18:10:18 +0200
|
||||
Subject: [PATCH xserver 4/4] xwayland: Free all remaining events in
|
||||
xwl_present_cleanup
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
At the end of xwl_present_cleanup, these events aren't reachable
|
||||
anymore, so if we don't free them first, they're leaked.
|
||||
|
||||
(cherry picked from commit 64565ea344fef0171497952ef75f019cb420fe3b)
|
||||
|
||||
v2:
|
||||
* Simpler backport, no need to keep a reference to the pixmap on the
|
||||
1.20 branch.
|
||||
|
||||
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
|
||||
---
|
||||
hw/xwayland/xwayland-present.c | 26 +++++++++++---------------
|
||||
1 file changed, 11 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 492e4a876..2cec63f59 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -114,6 +114,12 @@ xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
|
||||
static void
|
||||
xwl_present_free_event(struct xwl_present_event *event)
|
||||
{
|
||||
+ if (!event)
|
||||
+ return;
|
||||
+
|
||||
+ if (event->buffer)
|
||||
+ wl_buffer_set_user_data(event->buffer, NULL);
|
||||
+
|
||||
xorg_list_del(&event->list);
|
||||
free(event);
|
||||
}
|
||||
@@ -138,21 +144,10 @@ xwl_present_cleanup(WindowPtr window)
|
||||
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list)
|
||||
xwl_present_free_event(event);
|
||||
|
||||
- /* Clear remaining buffer releases and inform Present about free ressources */
|
||||
- event = xwl_present_window->sync_flip;
|
||||
- xwl_present_window->sync_flip = NULL;
|
||||
- if (event) {
|
||||
- if (event->buffer_released) {
|
||||
- xwl_present_free_event(event);
|
||||
- } else {
|
||||
- event->pending = FALSE;
|
||||
- event->abort = TRUE;
|
||||
- }
|
||||
- }
|
||||
- xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->release_queue, list) {
|
||||
- xorg_list_del(&event->list);
|
||||
- event->abort = TRUE;
|
||||
- }
|
||||
+ xwl_present_free_event(xwl_present_window->sync_flip);
|
||||
+
|
||||
+ xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->release_queue, list)
|
||||
+ xwl_present_free_event(event);
|
||||
|
||||
/* Clear timer */
|
||||
xwl_present_free_timer(xwl_present_window);
|
||||
@@ -353,6 +348,7 @@ xwl_present_queue_vblank(WindowPtr present_window,
|
||||
return BadAlloc;
|
||||
|
||||
event->event_id = event_id;
|
||||
+ event->buffer = NULL;
|
||||
event->xwl_present_window = xwl_present_window;
|
||||
event->target_msc = msc;
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
@ -21,7 +21,7 @@
|
||||
%global ansic_major 0
|
||||
%global ansic_minor 4
|
||||
%global videodrv_major 24
|
||||
%global videodrv_minor 0
|
||||
%global videodrv_minor 1
|
||||
%global xinput_major 24
|
||||
%global xinput_minor 1
|
||||
%global extension_major 10
|
||||
@ -45,8 +45,8 @@
|
||||
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.20.6
|
||||
Release: 2%{?gitdate:.%{gitdate}}%{?dist}
|
||||
Version: 1.20.8
|
||||
Release: 3%{?gitdate:.%{gitdate}}%{?dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -94,13 +94,18 @@ Patch10: 0001-mustard-Don-t-probe-for-drivers-not-shipped-in-RHEL8.patch
|
||||
Patch11: 0001-mustard-Add-DRI2-fallback-driver-mappings-for-i965-a.patch
|
||||
#Patch11: 0001-Enable-PAM-support.patch
|
||||
Patch12: 0001-link-with-z-now.patch
|
||||
Patch13: 0001-modesetting-Hide-atomic-behind-Option-Atomic-boolean.patch
|
||||
Patch14: 0001-xfree86-Don-t-autoconfigure-vesa-or-fbdev.patch
|
||||
Patch15: 0001-xfree86-LeaveVT-from-xf86CrtcCloseScreen.patch
|
||||
Patch16: 0001-xfree86-try-harder-to-span-on-multihead.patch
|
||||
Patch17: 0001-xwayland-Disable-Present-support.patch
|
||||
Patch18: 0001-mustard-Work-around-broken-fbdev-headers.patch
|
||||
|
||||
# Xwayland / Present leak fixes from
|
||||
# https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/459
|
||||
Patch20: 0001-present-wnmd-Keep-pixmap-pointer-in-present_wnmd_cle.patch
|
||||
Patch21: 0002-present-wnmd-Free-flip_queue-entries-in-present_wnmd.patch
|
||||
Patch22: 0003-xwayland-Always-use-xwl_present_free_event-for-freei.patch
|
||||
Patch23: 0004-xwayland-Free-all-remaining-events-in-xwl_present_cl.patch
|
||||
|
||||
# fix to be upstreamed
|
||||
Patch100: 0001-linux-Make-platform-device-probe-less-fragile.patch
|
||||
Patch102: 0001-xfree86-ensure-the-readlink-buffer-is-null-terminate.patch
|
||||
@ -108,11 +113,7 @@ Patch102: 0001-xfree86-ensure-the-readlink-buffer-is-null-terminate.patch
|
||||
# fix already upstream
|
||||
Patch200: 0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch
|
||||
Patch201: 0001-linux-Fix-platform-device-PCI-detection-for-complex-.patch
|
||||
|
||||
# 1738670 - Graphical artifacts when modesetting
|
||||
Patch300: 0001-modesetting-Call-glamor_finish-from-drmmode_crtc_set.patch
|
||||
Patch301: 0002-xfree86-modes-Call-xf86RotateRedisplay-from-xf86Crtc.patch
|
||||
Patch302: 0003-modesetting-Clear-new-screen-pixmap-storage-on-RandR.patch
|
||||
Patch202: 0001-modesetting-Reduce-glamor-initialization-failed-mess.patch
|
||||
|
||||
BuildRequires: systemtap-sdt-devel
|
||||
BuildRequires: git
|
||||
@ -556,6 +557,23 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Jun 26 2020 Michel Dänzer <mdaenzer@redhat.com> - 1.20.8-3
|
||||
- Downgrade modesetting "glamor initialization failed" X_ERROR → X_INFO
|
||||
Resolves: #1724573
|
||||
- Xwayland / Present leak fixes for #1728684
|
||||
|
||||
* Wed Jun 10 2020 Michel Dänzer <mdaenzer@redhat.com> - 1.20.8-2
|
||||
- Re-enable Xwayland Present support
|
||||
Resolves: #1728684, #1715676
|
||||
- Remove unused patch
|
||||
|
||||
* Tue May 26 2020 Adam Jackson <ajax@redhat.com> - 1.20.8-1
|
||||
- xserver 1.20.8
|
||||
|
||||
* Tue Feb 11 2020 Michel Dänzer <mdaenzer@redhat.com> - 1.20.6-3
|
||||
- Add fix for crash with Option "Rotate" in xorg.conf
|
||||
Resolves: #1795328
|
||||
|
||||
* Wed Dec 11 2019 Michel Dänzer <mdaenzer@redhat.com> - 1.20.6-2
|
||||
- Add fixes for intermittent modesetting artifacts
|
||||
Resolves: #1738670
|
||||
|
Loading…
Reference in New Issue
Block a user