fc966ac646
for an idle event when a CRTC is turned off (#1256082,#1258084)
61 lines
2.0 KiB
Diff
61 lines
2.0 KiB
Diff
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
|
|
|