|
|
429653e |
From d6a3e574497b8f4855a0bb9e5c1eb3e1b6ebb770 Mon Sep 17 00:00:00 2001
|
|
|
429653e |
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
|
429653e |
Date: Thu, 13 Aug 2009 16:37:00 +1000
|
|
|
429653e |
Subject: [PATCH] Xext: fix up wrong conditions for negative sync transitions.
|
|
|
429653e |
|
|
|
429653e |
If the counter had a value higher than the trigger value for a negative
|
|
|
429653e |
transition, the trigger value did not get set.
|
|
|
429653e |
|
|
|
429653e |
The correct sequence of checks is:
|
|
|
429653e |
if (positive transition)
|
|
|
429653e |
if (counter value < trigger value)
|
|
|
429653e |
set up trigger
|
|
|
429653e |
if (negative transition)
|
|
|
429653e |
if (counter value > trigger value)
|
|
|
429653e |
set up trigger
|
|
|
429653e |
|
|
|
429653e |
Red Hat Bug 501601 <https://bugzilla.redhat.com/show_bug.cgi?id=501601>
|
|
|
429653e |
---
|
|
|
429653e |
Xext/sync.c | 32 ++++++++++++++------------------
|
|
|
429653e |
1 files changed, 14 insertions(+), 18 deletions(-)
|
|
|
429653e |
|
|
|
429653e |
diff --git a/Xext/sync.c b/Xext/sync.c
|
|
|
429653e |
index 5f4ce56..667f8ab 100644
|
|
|
429653e |
--- a/Xext/sync.c
|
|
|
429653e |
+++ b/Xext/sync.c
|
|
|
429653e |
@@ -962,28 +962,24 @@ SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver)
|
|
|
429653e |
pnewltval = &psci->bracket_less;
|
|
|
429653e |
}
|
|
|
429653e |
}
|
|
|
429653e |
- else if ( (pTrigger->test_type == XSyncPositiveTransition &&
|
|
|
429653e |
+ else if (pTrigger->test_type == XSyncNegativeTransition &&
|
|
|
429653e |
ct != XSyncCounterNeverIncreases)
|
|
|
429653e |
- ||
|
|
|
429653e |
- (pTrigger->test_type == XSyncNegativeTransition &&
|
|
|
429653e |
+ {
|
|
|
429653e |
+ if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
|
|
|
429653e |
+ XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
|
|
|
429653e |
+ {
|
|
|
429653e |
+ psci->bracket_less = pTrigger->test_value;
|
|
|
429653e |
+ pnewltval = &psci->bracket_less;
|
|
|
429653e |
+ }
|
|
|
429653e |
+ }
|
|
|
429653e |
+ else if (pTrigger->test_type == XSyncPositiveTransition &&
|
|
|
429653e |
ct != XSyncCounterNeverDecreases)
|
|
|
429653e |
- )
|
|
|
429653e |
{
|
|
|
429653e |
- if (XSyncValueLessThan(pCounter->value, pTrigger->test_value))
|
|
|
429653e |
+ if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
|
|
|
429653e |
+ XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
|
|
|
429653e |
{
|
|
|
429653e |
- if (XSyncValueLessThan(pTrigger->test_value,
|
|
|
429653e |
- psci->bracket_greater))
|
|
|
429653e |
- {
|
|
|
429653e |
- psci->bracket_greater = pTrigger->test_value;
|
|
|
429653e |
- pnewgtval = &psci->bracket_greater;
|
|
|
429653e |
- }
|
|
|
429653e |
- else
|
|
|
429653e |
- if (XSyncValueGreaterThan(pTrigger->test_value,
|
|
|
429653e |
- psci->bracket_less))
|
|
|
429653e |
- {
|
|
|
429653e |
- psci->bracket_less = pTrigger->test_value;
|
|
|
429653e |
- pnewltval = &psci->bracket_less;
|
|
|
429653e |
- }
|
|
|
429653e |
+ psci->bracket_greater = pTrigger->test_value;
|
|
|
429653e |
+ pnewgtval = &psci->bracket_greater;
|
|
|
429653e |
}
|
|
|
429653e |
}
|
|
|
429653e |
} /* end for each trigger */
|
|
|
429653e |
--
|
|
|
429653e |
1.6.3.rc1.2.g0164.dirty
|
|
|
429653e |
|