pull in candidate fix for clients getting stuck waiting indefinitely

for an idle event when a CRTC is turned off (#1256082,#1258084)
This commit is contained in:
Rex Dieter 2015-09-24 07:27:43 -05:00
parent 0307fa93a6
commit fc966ac646
2 changed files with 68 additions and 1 deletions

View File

@ -0,0 +1,60 @@
From e3cdf29473a15790d4dab818f42df429997d2dda Mon Sep 17 00:00:00 2001
From: Fedora X Ninjas <x@fedoraproject.org>
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 <fredrik at kde.org>
---
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

View File

@ -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 <rdieter@fedoraproject.org> 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 <airlied@redhat.com> 1.18.0-0.3
- hack to fix GLX_MESA_copy_sub_buffer regression (#1265395)