1 From db568f9eabf3450d8a023597ff007df355b13ea8 Mon Sep 17 00:00:00 2001
2 From: Peter Hutterer <peter.hutterer@who-t.net>
3 Date: Thu, 13 Aug 2009 06:37:00 +0000
4 Subject: Xext: fix up wrong conditions for negative sync transitions.
6 If the counter had a value higher than the trigger value for a negative
7 transition, the trigger value did not get set.
9 The correct sequence of checks is:
10 if (positive transition)
11 if (counter value < trigger value)
13 if (negative transition)
14 if (counter value > trigger value)
17 Red Hat Bug 501601 <https://bugzilla.redhat.com/show_bug.cgi?id=501601>
19 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
21 diff --git a/Xext/sync.c b/Xext/sync.c
22 index 5f4ce56..667f8ab 100644
25 @@ -962,28 +962,24 @@ SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver)
26 pnewltval = &psci->bracket_less;
29 - else if ( (pTrigger->test_type == XSyncPositiveTransition &&
30 + else if (pTrigger->test_type == XSyncNegativeTransition &&
31 ct != XSyncCounterNeverIncreases)
33 - (pTrigger->test_type == XSyncNegativeTransition &&
35 + if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
36 + XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
38 + psci->bracket_less = pTrigger->test_value;
39 + pnewltval = &psci->bracket_less;
42 + else if (pTrigger->test_type == XSyncPositiveTransition &&
43 ct != XSyncCounterNeverDecreases)
46 - if (XSyncValueLessThan(pCounter->value, pTrigger->test_value))
47 + if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
48 + XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
50 - if (XSyncValueLessThan(pTrigger->test_value,
51 - psci->bracket_greater))
53 - psci->bracket_greater = pTrigger->test_value;
54 - pnewgtval = &psci->bracket_greater;
57 - if (XSyncValueGreaterThan(pTrigger->test_value,
58 - psci->bracket_less))
60 - psci->bracket_less = pTrigger->test_value;
61 - pnewltval = &psci->bracket_less;
63 + psci->bracket_greater = pTrigger->test_value;
64 + pnewgtval = &psci->bracket_greater;
67 } /* end for each trigger */