From 429653e028ee8ecf0582cd3844f5d2cef608324e Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Aug 13 2009 21:56:11 +0000 Subject: * Thu Aug 13 2009 Peter Hutterer 1.6.3-2 - xserver-1.6.3-sync-conditions.patch: Fix conditions when checking negative transition triggers in the sync extension (#501601) --- diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index aed119c..1779223 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -19,7 +19,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.6.3 -Release: 1%{?dist} +Release: 2%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -111,6 +111,9 @@ Patch6046: xserver-1.6.1-fix-glx-drawable.patch # #510238, already upstream Patch6047: xserver-1.6.2-vboxvideo.patch +# 501601, upstream, nominated for 1.6.4 +Patch6048: xserver-1.6.3-sync-conditions.patch + %define moduledir %{_libdir}/xorg/modules %define drimoduledir %{_libdir}/dri %define sdkdir %{_includedir}/xorg @@ -527,6 +530,10 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Thu Aug 13 2009 Peter Hutterer 1.6.3-2 +- xserver-1.6.3-sync-conditions.patch: Fix conditions when checking + negative transition triggers in the sync extension (#501601) + * Thu Aug 13 2009 Peter Hutterer 1.6.3-1 - xserver 1.6.3 - xserver-1.6.0-selinux-less.patch: Drop diff --git a/xserver-1.6.3-sync-conditions.patch b/xserver-1.6.3-sync-conditions.patch new file mode 100644 index 0000000..22bd9aa --- /dev/null +++ b/xserver-1.6.3-sync-conditions.patch @@ -0,0 +1,71 @@ +From d6a3e574497b8f4855a0bb9e5c1eb3e1b6ebb770 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 13 Aug 2009 16:37:00 +1000 +Subject: [PATCH] Xext: fix up wrong conditions for negative sync transitions. + +If the counter had a value higher than the trigger value for a negative +transition, the trigger value did not get set. + +The correct sequence of checks is: +if (positive transition) + if (counter value < trigger value) + set up trigger +if (negative transition) + if (counter value > trigger value) + set up trigger + +Red Hat Bug 501601 +--- + Xext/sync.c | 32 ++++++++++++++------------------ + 1 files changed, 14 insertions(+), 18 deletions(-) + +diff --git a/Xext/sync.c b/Xext/sync.c +index 5f4ce56..667f8ab 100644 +--- a/Xext/sync.c ++++ b/Xext/sync.c +@@ -962,28 +962,24 @@ SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver) + pnewltval = &psci->bracket_less; + } + } +- else if ( (pTrigger->test_type == XSyncPositiveTransition && ++ else if (pTrigger->test_type == XSyncNegativeTransition && + ct != XSyncCounterNeverIncreases) +- || +- (pTrigger->test_type == XSyncNegativeTransition && ++ { ++ if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) && ++ XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) ++ { ++ psci->bracket_less = pTrigger->test_value; ++ pnewltval = &psci->bracket_less; ++ } ++ } ++ else if (pTrigger->test_type == XSyncPositiveTransition && + ct != XSyncCounterNeverDecreases) +- ) + { +- if (XSyncValueLessThan(pCounter->value, pTrigger->test_value)) ++ if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) && ++ XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) + { +- if (XSyncValueLessThan(pTrigger->test_value, +- psci->bracket_greater)) +- { +- psci->bracket_greater = pTrigger->test_value; +- pnewgtval = &psci->bracket_greater; +- } +- else +- if (XSyncValueGreaterThan(pTrigger->test_value, +- psci->bracket_less)) +- { +- psci->bracket_less = pTrigger->test_value; +- pnewltval = &psci->bracket_less; +- } ++ psci->bracket_greater = pTrigger->test_value; ++ pnewgtval = &psci->bracket_greater; + } + } + } /* end for each trigger */ +-- +1.6.3.rc1.2.g0164.dirty +