From fc966ac6462217d87ddb1d05705e966a81a41f3f Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Sep 24 2015 12:27:43 +0000 Subject: pull in candidate fix for clients getting stuck waiting indefinitely for an idle event when a CRTC is turned off (#1256082,#1258084) --- diff --git a/0001-present-Don-t-stash-the-MSC-value-when-present_get_u.patch b/0001-present-Don-t-stash-the-MSC-value-when-present_get_u.patch new file mode 100644 index 0000000..1e91c32 --- /dev/null +++ b/0001-present-Don-t-stash-the-MSC-value-when-present_get_u.patch @@ -0,0 +1,60 @@ +From e3cdf29473a15790d4dab818f42df429997d2dda Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas +Date: Wed, 16 Sep 2015 11:26:22 -0500 +Subject: [PATCH] present: Don't stash the MSC value when present_get_ust_msc + fails +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Otherwise we stash an uninitalized value, and later use it to compute +the msc_offset for the window. Also initialize ust and crtc_msc so we +never use uninitalized values when present_get_ust_msc fails. + +This fixes clients getting stuck waiting indefinitely for an idle +event when a CRTC is turned off. + +Signed-off-by: Fredrik Höglund +--- + present/present.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/present/present.c b/present/present.c +index a634601..7ddffbd 100644 +--- a/present/present.c ++++ b/present/present.c +@@ -710,9 +710,9 @@ present_pixmap(WindowPtr window, + present_notify_ptr notifies, + int num_notifies) + { +- uint64_t ust; ++ uint64_t ust = 0; + uint64_t target_msc; +- uint64_t crtc_msc; ++ uint64_t crtc_msc = 0; + int ret; + present_vblank_ptr vblank, tmp; + ScreenPtr screen = window->drawable.pScreen; +@@ -734,13 +734,15 @@ present_pixmap(WindowPtr window, + target_crtc = present_get_crtc(window); + } + +- present_get_ust_msc(screen, target_crtc, &ust, &crtc_msc); ++ ret = present_get_ust_msc(screen, target_crtc, &ust, &crtc_msc); + + target_msc = present_window_to_crtc_msc(window, target_crtc, window_msc, crtc_msc); + +- /* Stash the current MSC away in case we need it later +- */ +- window_priv->msc = crtc_msc; ++ if (ret == Success) { ++ /* Stash the current MSC away in case we need it later ++ */ ++ window_priv->msc = crtc_msc; ++ } + + /* Adjust target_msc to match modulus + */ +-- +2.5.0 + diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index b889816..ab82ba7 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -45,7 +45,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.18.0 -Release: 0.3%{?gitdate:.%{gitdate}}%{dist} +Release: 0.4%{?gitdate:.%{gitdate}}%{dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -95,6 +95,9 @@ Patch7027: xserver-autobind-hotplug.patch # submitted: http://lists.x.org/archives/xorg-devel/2013-October/037996.html Patch9100: exa-only-draw-valid-trapezoids.patch +# http://lists.x.org/archives/xorg-devel/2015-September/047304.html +Patch9200: 0001-present-Don-t-stash-the-MSC-value-when-present_get_u.patch + # because the display-managers are not ready yet, do not upstream Patch10000: 0001-Fedora-hack-Make-the-suid-root-wrapper-always-start-.patch @@ -634,6 +637,10 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete %changelog +* Thu Sep 24 2015 Rex Dieter 1.18.0-0.4 +- pull in candidate fix for clients getting stuck waiting indefinitely + for an idle event when a CRTC is turned off (#1256082,#1258084) + * Tue Sep 22 2015 Dave Airlie 1.18.0-0.3 - hack to fix GLX_MESA_copy_sub_buffer regression (#1265395)