Update to 1.19.0
- xserver 1.19.0 - Fix use after free of cursors in Xwayland (rhbz#1385258) - Fix an issue where some monitors would show only black, or partially black when secondary GPU outputs are used
This commit is contained in:
parent
fb49b2964a
commit
bdf207e6f8
@ -0,0 +1,56 @@
|
||||
From 10f3c8d6eab0af074d0371152ada543e4dfe7369 Mon Sep 17 00:00:00 2001
|
||||
From: Hans De Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 22 Nov 2016 15:28:51 +0100
|
||||
Subject: [PATCH xserver 1/2] randr: rrCheckPixmapBounding: Do not substract
|
||||
crtc non 0 x, y from screen size
|
||||
|
||||
The purpose of rrCheckPixmapBounding is to make sure that the
|
||||
screen_pixmap is large enough for the slave-output which crtc is
|
||||
being configured.
|
||||
|
||||
This should include crtc->x and crtc->y, otherwise the crtc might
|
||||
still end up scanning out an area outside of the screen-pixmap.
|
||||
|
||||
For example: Take a laptop with an external monitor on a slave-output at
|
||||
1920x1080+0+0 and its internal-screen at 3840x2160+1920+0 and in
|
||||
gnome-settings-daemon move the external monitor to be on the ri ght of
|
||||
the internal screen rather then on the left. First g-s-d will do a
|
||||
RRSetScreenSize to 5760*2160 (which is a nop), then it calls RRSetCrtc
|
||||
to move the slave output to 1920x1080+3840+0, since this is a slave
|
||||
output, rrCheckPixmapBounding gets called, since the 2 crtcs now overlap
|
||||
the code before this commit would shrinks the screen_pixmap to 3180*2160.
|
||||
Then g-s-d calls RRSetCrtc to move the internal screen to 3180*2160+0+0.
|
||||
|
||||
And we end up with the slave-output configured to scan-out an area
|
||||
which completely falls outside of the screen-pixmap (and end up with
|
||||
a black display on the external monitor).
|
||||
|
||||
This commit fixes this by not substracting the x1 and y1 coordinates
|
||||
of the union-ed region when determining the new screen_pixmap size.
|
||||
|
||||
Cc: Nikhil Mahale <nmahale@nvidia.com>
|
||||
Cc: Dave Airlie <airlied@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
randr/rrcrtc.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
|
||||
index 5d404e8..ac853ea 100644
|
||||
--- a/randr/rrcrtc.c
|
||||
+++ b/randr/rrcrtc.c
|
||||
@@ -686,8 +686,8 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
|
||||
}
|
||||
|
||||
newsize = RegionExtents(&total_region);
|
||||
- new_width = newsize->x2 - newsize->x1;
|
||||
- new_height = newsize->y2 - newsize->y1;
|
||||
+ new_width = newsize->x2;
|
||||
+ new_height = newsize->y2;
|
||||
|
||||
if (new_width == screen_pixmap->drawable.width &&
|
||||
new_height == screen_pixmap->drawable.height) {
|
||||
--
|
||||
2.9.3
|
||||
|
83
0001-xwayland-Fix-use-after-free-of-cursors.patch
Normal file
83
0001-xwayland-Fix-use-after-free-of-cursors.patch
Normal file
@ -0,0 +1,83 @@
|
||||
From 5fd444d8e92dd6ae9a2bb0b5235e2375a17f09ac Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Tue, 22 Nov 2016 09:48:03 +0100
|
||||
Subject: [PATCH xserver] xwayland: Fix use after free of cursors
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Sometimes, Xwayland will try to use a cursor that has just been freed,
|
||||
leading to a crash when trying to access that cursor data either in
|
||||
miPointerUpdateSprite() or AnimCurTimerNotify().
|
||||
|
||||
CheckMotion() updates the pointer's cursor based on which xwindow
|
||||
XYToWindow() returns, and Xwayland implements its own xwl_xy_to_window()
|
||||
to fake a crossing to the root window when the pointer has left the
|
||||
Wayland surface but is still within the xwindow.
|
||||
|
||||
But after an xwindow is unrealized, the last xwindow used to match the
|
||||
xwindows is cleared so two consecutive calls to xwl_xy_to_window() may
|
||||
not return the same xwindow.
|
||||
|
||||
To avoid this issue, update the last_xwindow based on enter and leave
|
||||
notifications instead of xwl_xy_to_window(), and check if the xwindow
|
||||
found by the regular miXYToWindow() is a child of the known last
|
||||
xwindow, so that multiple consecutive calls to xwl_xy_to_window()
|
||||
return the same xwindow, being either the one found by miXYToWindow()
|
||||
or the root window.
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1385258
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Tested-by: Vít Ondruch <vondruch@redhat.com>
|
||||
Tested-by: Satish Balay <balay@fastmail.fm>
|
||||
---
|
||||
hw/xwayland/xwayland-input.c | 17 +++++++++++++----
|
||||
1 file changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
|
||||
index 0526122..681bc9d 100644
|
||||
--- a/hw/xwayland/xwayland-input.c
|
||||
+++ b/hw/xwayland/xwayland-input.c
|
||||
@@ -312,6 +312,9 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer,
|
||||
dx = xwl_seat->focus_window->window->drawable.x;
|
||||
dy = xwl_seat->focus_window->window->drawable.y;
|
||||
|
||||
+ /* We just entered a new xwindow, forget about the old last xwindow */
|
||||
+ xwl_seat->last_xwindow = NullWindow;
|
||||
+
|
||||
master = GetMaster(dev, POINTER_OR_FLOAT);
|
||||
(*pScreen->SetCursorPosition) (dev, pScreen, dx + sx, dy + sy, TRUE);
|
||||
|
||||
@@ -360,8 +363,14 @@ pointer_handle_leave(void *data, struct wl_pointer *pointer,
|
||||
|
||||
xwl_seat->xwl_screen->serial = serial;
|
||||
|
||||
- xwl_seat->focus_window = NULL;
|
||||
- CheckMotion(NULL, GetMaster(dev, POINTER_OR_FLOAT));
|
||||
+ /* The pointer has left a known xwindow, save it for a possible match
|
||||
+ * in sprite_check_lost_focus()
|
||||
+ */
|
||||
+ if (xwl_seat->focus_window) {
|
||||
+ xwl_seat->last_xwindow = xwl_seat->focus_window->window;
|
||||
+ xwl_seat->focus_window = NULL;
|
||||
+ CheckMotion(NULL, GetMaster(dev, POINTER_OR_FLOAT));
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1256,10 +1265,10 @@ sprite_check_lost_focus(SpritePtr sprite, WindowPtr window)
|
||||
*/
|
||||
if (master->lastSlave == xwl_seat->pointer &&
|
||||
xwl_seat->focus_window == NULL &&
|
||||
- xwl_seat->last_xwindow == window)
|
||||
+ xwl_seat->last_xwindow != NullWindow &&
|
||||
+ IsParent (xwl_seat->last_xwindow, window))
|
||||
return TRUE;
|
||||
|
||||
- xwl_seat->last_xwindow = window;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,54 +0,0 @@
|
||||
From 4cfee398726adf89db4b632ade7d6cab8b78282e Mon Sep 17 00:00:00 2001
|
||||
From: Ian Ray <ian.ray@ge.com>
|
||||
Date: Wed, 25 May 2016 10:41:53 +0300
|
||||
Subject: [PATCH xserver v2 1/7] xwayland-shm: block signals during fallocate
|
||||
|
||||
posix_fallocate() does an explicit rollback if it gets EINTR, and
|
||||
this is a problem on slow systems because when the allocation size
|
||||
is sufficiently large posix_fallocate() will always be interrupted
|
||||
by the smart scheduler's SIGALRM.
|
||||
|
||||
Changes since v1 - big comment in the code to explain what is going on
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
Signed-off-by: Ian Ray <ian.ray@ge.com>
|
||||
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
|
||||
Acked-by: Daniel Stone <daniels@collabora.com>
|
||||
---
|
||||
hw/xwayland/xwayland-shm.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-shm.c b/hw/xwayland/xwayland-shm.c
|
||||
index daf6148..452d1f5 100644
|
||||
--- a/hw/xwayland/xwayland-shm.c
|
||||
+++ b/hw/xwayland/xwayland-shm.c
|
||||
@@ -28,6 +28,8 @@
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
+#include "os.h"
|
||||
+
|
||||
#include "xwayland.h"
|
||||
|
||||
#include <sys/mman.h>
|
||||
@@ -139,9 +141,17 @@ os_create_anonymous_file(off_t size)
|
||||
return -1;
|
||||
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
+ /*
|
||||
+ * posix_fallocate does an explicit rollback if it gets EINTR.
|
||||
+ * Temporarily block signals to allow the call to succeed on
|
||||
+ * slow systems where the smart scheduler's SIGALRM prevents
|
||||
+ * large allocation attempts from ever succeeding.
|
||||
+ */
|
||||
+ OsBlockSignals();
|
||||
do {
|
||||
ret = posix_fallocate(fd, 0, size);
|
||||
} while (ret == EINTR);
|
||||
+ OsReleaseSignals();
|
||||
|
||||
if (ret != 0) {
|
||||
close(fd);
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,88 +0,0 @@
|
||||
From 7513da40a656317ad3aa101651d29373de99c798 Mon Sep 17 00:00:00 2001
|
||||
From: Timo Aaltonen <tjaalton@ubuntu.com>
|
||||
Date: Wed, 2 Nov 2016 17:18:11 +0200
|
||||
Subject: [PATCH xserver v2 2/7] dri2: Sync i965_pci_ids.h from mesa
|
||||
|
||||
Import changes from these mesa commits:
|
||||
85ea8deb26da420 i965: Removing PCI IDs that are no longer listed as Kabylake.
|
||||
bdff2e554735ed9 i956: Add more Kabylake PCI IDs.
|
||||
f1fa8b4a1ca73fa i965/bxt: Add 2x6 variant
|
||||
d1ab544bb883d04 i965/chv: Display proper branding
|
||||
20e8ee36627f874 i965/skl: Update Skylake renderer strings
|
||||
644c8a515192d28 i965/skl: Add two missing device IDs
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
Signed-off-by: Timo Aaltonen <tjaalton@ubuntu.com>
|
||||
---
|
||||
hw/xfree86/dri2/pci_ids/i965_pci_ids.h | 32 +++++++++++++++++---------------
|
||||
1 file changed, 17 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/dri2/pci_ids/i965_pci_ids.h b/hw/xfree86/dri2/pci_ids/i965_pci_ids.h
|
||||
index 5139e27..1566afd 100644
|
||||
--- a/hw/xfree86/dri2/pci_ids/i965_pci_ids.h
|
||||
+++ b/hw/xfree86/dri2/pci_ids/i965_pci_ids.h
|
||||
@@ -112,6 +112,7 @@ CHIPSET(0x162E, bdw_gt3, "Intel(R) Broadwell GT3")
|
||||
CHIPSET(0x1902, skl_gt1, "Intel(R) HD Graphics 510 (Skylake GT1)")
|
||||
CHIPSET(0x1906, skl_gt1, "Intel(R) HD Graphics 510 (Skylake GT1)")
|
||||
CHIPSET(0x190A, skl_gt1, "Intel(R) Skylake GT1")
|
||||
+CHIPSET(0x190B, skl_gt1, "Intel(R) HD Graphics 510 (Skylake GT1)")
|
||||
CHIPSET(0x190E, skl_gt1, "Intel(R) Skylake GT1")
|
||||
CHIPSET(0x1912, skl_gt2, "Intel(R) HD Graphics 530 (Skylake GT2)")
|
||||
CHIPSET(0x1913, skl_gt2, "Intel(R) Skylake GT2f")
|
||||
@@ -122,19 +123,21 @@ CHIPSET(0x191A, skl_gt2, "Intel(R) Skylake GT2")
|
||||
CHIPSET(0x191B, skl_gt2, "Intel(R) HD Graphics 530 (Skylake GT2)")
|
||||
CHIPSET(0x191D, skl_gt2, "Intel(R) HD Graphics P530 (Skylake GT2)")
|
||||
CHIPSET(0x191E, skl_gt2, "Intel(R) HD Graphics 515 (Skylake GT2)")
|
||||
-CHIPSET(0x1921, skl_gt2, "Intel(R) Skylake GT2")
|
||||
-CHIPSET(0x1923, skl_gt3, "Intel(R) Iris Graphics 540 (Skylake GT3e)")
|
||||
-CHIPSET(0x1926, skl_gt3, "Intel(R) HD Graphics 535 (Skylake GT3)")
|
||||
+CHIPSET(0x1921, skl_gt2, "Intel(R) HD Graphics 520 (Skylake GT2)")
|
||||
+CHIPSET(0x1923, skl_gt3, "Intel(R) Skylake GT3e")
|
||||
+CHIPSET(0x1926, skl_gt3, "Intel(R) Iris Graphics 540 (Skylake GT3e)")
|
||||
CHIPSET(0x1927, skl_gt3, "Intel(R) Iris Graphics 550 (Skylake GT3e)")
|
||||
CHIPSET(0x192A, skl_gt4, "Intel(R) Skylake GT4")
|
||||
-CHIPSET(0x192B, skl_gt3, "Intel(R) Iris Graphics (Skylake GT3fe)")
|
||||
-CHIPSET(0x1932, skl_gt4, "Intel(R) Skylake GT4")
|
||||
-CHIPSET(0x193A, skl_gt4, "Intel(R) Skylake GT4")
|
||||
-CHIPSET(0x193B, skl_gt4, "Intel(R) Skylake GT4")
|
||||
-CHIPSET(0x193D, skl_gt4, "Intel(R) Skylake GT4")
|
||||
+CHIPSET(0x192B, skl_gt3, "Intel(R) Iris Graphics 555 (Skylake GT3e)")
|
||||
+CHIPSET(0x192D, skl_gt3, "Intel(R) Iris Graphics P555 (Skylake GT3e)")
|
||||
+CHIPSET(0x1932, skl_gt4, "Intel(R) Iris Pro Graphics 580 (Skylake GT4e)")
|
||||
+CHIPSET(0x193A, skl_gt4, "Intel(R) Iris Pro Graphics P580 (Skylake GT4e)")
|
||||
+CHIPSET(0x193B, skl_gt4, "Intel(R) Iris Pro Graphics 580 (Skylake GT4e)")
|
||||
+CHIPSET(0x193D, skl_gt4, "Intel(R) Iris Pro Graphics P580 (Skylake GT4e)")
|
||||
CHIPSET(0x5902, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x5906, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x590A, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
+CHIPSET(0x5908, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x590B, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x590E, kbl_gt1, "Intel(R) Kabylake GT1")
|
||||
CHIPSET(0x5913, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
|
||||
@@ -147,17 +150,16 @@ CHIPSET(0x591B, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x591D, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x591E, kbl_gt2, "Intel(R) Kabylake GT2")
|
||||
CHIPSET(0x5921, kbl_gt2, "Intel(R) Kabylake GT2F")
|
||||
+CHIPSET(0x5923, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x5926, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
-CHIPSET(0x592A, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
-CHIPSET(0x592B, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
-CHIPSET(0x5932, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
-CHIPSET(0x593A, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
+CHIPSET(0x5927, kbl_gt3, "Intel(R) Kabylake GT3")
|
||||
CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
-CHIPSET(0x593D, kbl_gt4, "Intel(R) Kabylake GT4")
|
||||
-CHIPSET(0x22B0, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
-CHIPSET(0x22B1, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
+CHIPSET(0x22B0, chv, "Intel(R) HD Graphics (Cherrytrail)")
|
||||
+CHIPSET(0x22B1, chv, "Intel(R) HD Graphics XXX (Braswell)") /* Overridden in brw_get_renderer_string */
|
||||
CHIPSET(0x22B2, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
CHIPSET(0x22B3, chv, "Intel(R) HD Graphics (Cherryview)")
|
||||
CHIPSET(0x0A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
CHIPSET(0x1A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
+CHIPSET(0x1A85, bxt_2x6, "Intel(R) HD Graphics (Broxton 2x6)")
|
||||
CHIPSET(0x5A84, bxt, "Intel(R) HD Graphics (Broxton)")
|
||||
+CHIPSET(0x5A85, bxt_2x6, "Intel(R) HD Graphics (Broxton 2x6)")
|
||||
--
|
||||
2.9.3
|
||||
|
@ -0,0 +1,73 @@
|
||||
From a17f2aee7e46b4f0e4214fbbac5e1b1d12057dbe Mon Sep 17 00:00:00 2001
|
||||
From: Hans De Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 22 Nov 2016 15:28:52 +0100
|
||||
Subject: [PATCH xserver 2/2] randr: rrCheckPixmapBounding: do not shrink the
|
||||
screen_pixmap
|
||||
|
||||
The purpose of rrCheckPixmapBounding is to make sure that the
|
||||
screen_pixmap is *large* enough for the slave-output which crtc is
|
||||
being configured.
|
||||
|
||||
However until now rrCheckPixmapBounding would also shrink the
|
||||
screen_pixmap in certain scenarios leading to various problems.
|
||||
|
||||
For example: Take a laptop with its internalscreen on a slave-output and
|
||||
currently disabled and an external monitor at 1920x1080+0+0.
|
||||
Now lets say that we want to drive the external monitor at its native
|
||||
resolution of 2560x1440 and have the internal screen mirror the top left
|
||||
part of the external monitor, so we run:
|
||||
|
||||
$ xrandr --output eDP --mode 1920x1080 --pos 0x0 --output HDMI \
|
||||
--mode 2560x1440 --pos 0x0
|
||||
|
||||
Here xrandr utility first calls RRSetScreenSize to 2560x1440, then it
|
||||
calls RRSetCrtc 1920x1080+0+0 on the eDP, since this is a slave output,
|
||||
rrCheckPixmapBounding gets called and resizes the screen_pixmap to
|
||||
1920x1080, undoing the RRSetScreenSize. Then RRSetCrtc 2560x1440+0+0
|
||||
gets called on the HDMI, depending on crtc->transforms this will
|
||||
either result in a BadValue error from ProcRRSetCrtcConfig; or
|
||||
it will succeed, but the monitor ends up running at 2560x1440
|
||||
while showing a 1920x1080 screen_pixmap + black borders on the right
|
||||
and bottom. Neither of which is what we want.
|
||||
|
||||
This commit removes the troublesome shrinking behavior, fixing this.
|
||||
|
||||
Note:
|
||||
|
||||
1) One could argue that this will leave us with a too large screen_pixmap
|
||||
in some cases, but rrCheckPixmapBounding only gets called for slave
|
||||
outputs, so xrandr clients already must manually shrink the screen_pixmap
|
||||
after disabling crtcs in normal setups.
|
||||
|
||||
2) An alternative approach would be to also call rrCheckPixmapBounding
|
||||
on RRSetCrtc on normal (non-slave) outputs, but that would result in
|
||||
2 unnecessary resizes of the screen_pixmap in the above example, which
|
||||
seems undesirable.
|
||||
|
||||
Cc: Nikhil Mahale <nmahale@nvidia.com>
|
||||
Cc: Dave Airlie <airlied@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
randr/rrcrtc.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
|
||||
index ac853ea..d1a51f0 100644
|
||||
--- a/randr/rrcrtc.c
|
||||
+++ b/randr/rrcrtc.c
|
||||
@@ -689,6 +689,12 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
|
||||
new_width = newsize->x2;
|
||||
new_height = newsize->y2;
|
||||
|
||||
+ if (new_width < screen_pixmap->drawable.width)
|
||||
+ new_width = screen_pixmap->drawable.width;
|
||||
+
|
||||
+ if (new_height < screen_pixmap->drawable.height)
|
||||
+ new_height = screen_pixmap->drawable.height;
|
||||
+
|
||||
if (new_width == screen_pixmap->drawable.width &&
|
||||
new_height == screen_pixmap->drawable.height) {
|
||||
} else {
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 717cfd417b7b4be50d73c684b028a20ddcbb568e Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Wed, 2 Nov 2016 13:39:50 -0700
|
||||
Subject: [PATCH xserver v2 3/7] dix: Make sure client is not in output_pending
|
||||
chain after closed (RH 1382444)
|
||||
|
||||
I think it is possible that output could get queued to a client during
|
||||
CloseDownClient. After it is removed from the pending queue, active
|
||||
grabs are released, the client is awoken if sleeping and any work
|
||||
queue entries related to the client are processed.
|
||||
|
||||
To fix this, move the call removing it from the output_pending chain
|
||||
until after clientGone has been set and then check clientGone in
|
||||
output_pending_mark.
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1382444
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
dix/dispatch.c | 2 +-
|
||||
include/dixstruct.h | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dix/dispatch.c b/dix/dispatch.c
|
||||
index e111377..3d0fe26 100644
|
||||
--- a/dix/dispatch.c
|
||||
+++ b/dix/dispatch.c
|
||||
@@ -3406,7 +3406,6 @@ CloseDownClient(ClientPtr client)
|
||||
UngrabServer(client);
|
||||
}
|
||||
mark_client_not_ready(client);
|
||||
- xorg_list_del(&client->output_pending);
|
||||
BITCLEAR(grabWaiters, client->index);
|
||||
DeleteClientFromAnySelections(client);
|
||||
ReleaseActiveGrabs(client);
|
||||
@@ -3435,6 +3434,7 @@ CloseDownClient(ClientPtr client)
|
||||
if (ClientIsAsleep(client))
|
||||
ClientSignal(client);
|
||||
ProcessWorkQueueZombies();
|
||||
+ output_pending_clear(client);
|
||||
CloseDownConnection(client);
|
||||
|
||||
/* If the client made it to the Running stage, nClients has
|
||||
diff --git a/include/dixstruct.h b/include/dixstruct.h
|
||||
index 3b578f8..d71b0ac 100644
|
||||
--- a/include/dixstruct.h
|
||||
+++ b/include/dixstruct.h
|
||||
@@ -159,7 +159,7 @@ extern struct xorg_list output_pending_clients;
|
||||
static inline void
|
||||
output_pending_mark(ClientPtr client)
|
||||
{
|
||||
- if (xorg_list_is_empty(&client->output_pending))
|
||||
+ if (!client->clientGone && xorg_list_is_empty(&client->output_pending))
|
||||
xorg_list_append(&client->output_pending, &output_pending_clients);
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
7547e58c87d18d6d0e157f5d2d04c7c7 xorg-server-1.18.99.902.tar.bz2
|
||||
6a4d01e4e5047ab8f556960424ba1fa9 xorg-server-1.19.0.tar.bz2
|
||||
|
@ -45,7 +45,7 @@
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.19.0
|
||||
Release: 0.8.rc2%{?gitdate:.%{gitdate}}%{dist}
|
||||
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -59,8 +59,7 @@ Source0: xorg-server-%{gitdate}.tar.xz
|
||||
Source1: make-git-snapshot.sh
|
||||
Source2: commitid
|
||||
%else
|
||||
Source0: http://www.x.org/pub/individual/xserver/%{pkgname}-1.18.99.902.tar.bz2
|
||||
#Source0: http://www.x.org/pub/individual/xserver/%{pkgname}-%{version}.tar.bz2
|
||||
Source0: http://www.x.org/pub/individual/xserver/%{pkgname}-%{version}.tar.bz2
|
||||
Source1: gitignore
|
||||
%endif
|
||||
|
||||
@ -79,14 +78,14 @@ Source31: xserver-sdk-abi-requires.git
|
||||
Source40: driver-abi-rebuild.sh
|
||||
|
||||
# Various fixes pending upstream
|
||||
Patch1: 0001-xwayland-shm-block-signals-during-fallocate.patch
|
||||
Patch2: 0002-dri2-Sync-i965_pci_ids.h-from-mesa.patch
|
||||
Patch3: 0003-dix-Make-sure-client-is-not-in-output_pending-chain-.patch
|
||||
Patch4: 0004-glamor-restore-vfunc-handlers-on-init-failure.patch
|
||||
Patch5: 0005-xfree86-Remove-redundant-ServerIsNotSeat0-check-from.patch
|
||||
Patch6: 0006-xfree86-Make-adding-unclaimed-devices-as-GPU-devices.patch
|
||||
Patch7: 0007-xfree86-Try-harder-to-find-atleast-1-non-GPU-Screen.patch
|
||||
Patch10: 0001-Fix-segfault-if-xorg.conf.d-is-absent.patch
|
||||
Patch1: 0004-glamor-restore-vfunc-handlers-on-init-failure.patch
|
||||
Patch2: 0005-xfree86-Remove-redundant-ServerIsNotSeat0-check-from.patch
|
||||
Patch3: 0006-xfree86-Make-adding-unclaimed-devices-as-GPU-devices.patch
|
||||
Patch4: 0007-xfree86-Try-harder-to-find-atleast-1-non-GPU-Screen.patch
|
||||
Patch5: 0001-Fix-segfault-if-xorg.conf.d-is-absent.patch
|
||||
Patch6: 0001-xwayland-Fix-use-after-free-of-cursors.patch
|
||||
Patch7: 0001-randr-rrCheckPixmapBounding-Do-not-substract-crtc-no.patch
|
||||
Patch8: 0002-randr-rrCheckPixmapBounding-do-not-shrink-the-screen.patch
|
||||
|
||||
#Patch6044: xserver-1.6.99-hush-prerelease-warning.patch
|
||||
|
||||
@ -336,8 +335,7 @@ Xserver source code needed to build VNC server (Xvnc)
|
||||
|
||||
|
||||
%prep
|
||||
#autosetup -N -n %{pkgname}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
|
||||
%autosetup -N -n %{pkgname}-%{?gitdate:%{gitdate}}%{!?gitdate:1.18.99.902}
|
||||
%autosetup -N -n %{pkgname}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
|
||||
rm -rf .git
|
||||
cp %{SOURCE1} .gitignore
|
||||
# ick
|
||||
@ -595,6 +593,12 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Nov 23 2016 Olivier Fourdan <ofourdan@redhat.com> 1.19.0-1
|
||||
- xserver 1.19.0
|
||||
- Fix use after free of cursors in Xwayland (rhbz#1385258)
|
||||
- Fix an issue where some monitors would show only black, or
|
||||
partially black when secondary GPU outputs are used
|
||||
|
||||
* Tue Nov 15 2016 Peter Hutterer <peter.hutterer@redhat.com> 1.19.0-0.8.rc2
|
||||
- Update device barriers for new master devices (#1384432)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user