diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2009-08-13 16:37:00 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2009-08-14 07:49:52 +1000 |
commit | db568f9eabf3450d8a023597ff007df355b13ea8 (patch) | |
tree | 003fa7f931f5a46204d516e6651510c05c21382f /Xext/sync.c | |
parent | a3e50b05747cab92090ae7d7f4475cd61d3fcadf (diff) |
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 <https://bugzilla.redhat.com/show_bug.cgi?id=501601>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'Xext/sync.c')
-rw-r--r-- | Xext/sync.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/Xext/sync.c b/Xext/sync.c index 5f4ce56bc..667f8ab78 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 */ |