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>
(cherry picked from commit db568f9eab
)
This commit is contained in:
parent
203df06c0e
commit
f134395a82
34
Xext/sync.c
34
Xext/sync.c
|
@ -1167,28 +1167,24 @@ SyncComputeBracketValues(pCounter, startOver)
|
|||
pnewltval = &psci->bracket_less;
|
||||
}
|
||||
}
|
||||
else if ( (pTrigger->test_type == XSyncPositiveTransition &&
|
||||
else if (pTrigger->test_type == XSyncNegativeTransition &&
|
||||
ct != XSyncCounterNeverIncreases)
|
||||
||
|
||||
(pTrigger->test_type == XSyncNegativeTransition &&
|
||||
ct != XSyncCounterNeverDecreases)
|
||||
)
|
||||
{
|
||||
if (XSyncValueLessThan(pCounter->value, pTrigger->test_value))
|
||||
if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
|
||||
XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
|
||||
{
|
||||
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_less = pTrigger->test_value;
|
||||
pnewltval = &psci->bracket_less;
|
||||
}
|
||||
}
|
||||
else if (pTrigger->test_type == XSyncPositiveTransition &&
|
||||
ct != XSyncCounterNeverDecreases)
|
||||
{
|
||||
if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
|
||||
XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
|
||||
{
|
||||
psci->bracket_greater = pTrigger->test_value;
|
||||
pnewgtval = &psci->bracket_greater;
|
||||
}
|
||||
}
|
||||
} /* end for each trigger */
|
||||
|
|
Loading…
Reference in New Issue
Block a user