Fix wrong bracket values when startOver = FALSE.

Currently, SyncComputeBracketValues reuses old values of bracket_greater
and bracket_less when startOver = FALSE. This can result in incorrect bracket
values. To fix this issue, the startOver parameter is removed, and we do not
reuse old values of bracket_greater and bracket_less.

X.Org Bug 27023 <http://bugs.freedesktop.org/show_bug.cgi?id=27023>

Signed-off-by: David James <davidjames@google.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
David James 2010-05-10 14:00:49 -07:00 committed by Keith Packard
parent 95074538cc
commit 758b861447

View File

@ -94,7 +94,7 @@ static SyncCounter **SysCounterList = NULL;
#define XSyncCAAllTrigger \ #define XSyncCAAllTrigger \
(XSyncCACounter | XSyncCAValueType | XSyncCAValue | XSyncCATestType) (XSyncCACounter | XSyncCAValueType | XSyncCAValue | XSyncCATestType)
static void SyncComputeBracketValues(SyncCounter *, Bool); static void SyncComputeBracketValues(SyncCounter *);
static void SyncInitServerTime(void); static void SyncInitServerTime(void);
@ -167,7 +167,7 @@ SyncDeleteTriggerFromCounter(SyncTrigger *pTrigger)
} }
if (IsSystemCounter(pTrigger->pCounter)) if (IsSystemCounter(pTrigger->pCounter))
SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE); SyncComputeBracketValues(pTrigger->pCounter);
} }
@ -194,7 +194,7 @@ SyncAddTriggerToCounter(SyncTrigger *pTrigger)
pTrigger->pCounter->pTriglist = pCur; pTrigger->pCounter->pTriglist = pCur;
if (IsSystemCounter(pTrigger->pCounter)) if (IsSystemCounter(pTrigger->pCounter))
SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE); SyncComputeBracketValues(pTrigger->pCounter);
return Success; return Success;
} }
@ -351,7 +351,7 @@ SyncInitTrigger(ClientPtr client, SyncTrigger *pTrigger, XSyncCounter counter,
} }
else if (IsSystemCounter(pCounter)) else if (IsSystemCounter(pCounter))
{ {
SyncComputeBracketValues(pCounter, /*startOver*/ TRUE); SyncComputeBracketValues(pCounter);
} }
return Success; return Success;
@ -646,7 +646,7 @@ SyncChangeCounter(SyncCounter *pCounter, CARD64 newval)
if (IsSystemCounter(pCounter)) if (IsSystemCounter(pCounter))
{ {
SyncComputeBracketValues(pCounter, /* startOver */ FALSE); SyncComputeBracketValues(pCounter);
} }
} }
@ -913,7 +913,7 @@ SyncDestroySystemCounter(pointer pSysCounter)
} }
static void static void
SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver) SyncComputeBracketValues(SyncCounter *pCounter)
{ {
SyncTriggerList *pCur; SyncTriggerList *pCur;
SyncTrigger *pTrigger; SyncTrigger *pTrigger;
@ -930,11 +930,8 @@ SyncComputeBracketValues(SyncCounter *pCounter, Bool startOver)
if (ct == XSyncCounterNeverChanges) if (ct == XSyncCounterNeverChanges)
return; return;
if (startOver) XSyncMaxValue(&psci->bracket_greater);
{ XSyncMinValue(&psci->bracket_less);
XSyncMaxValue(&psci->bracket_greater);
XSyncMinValue(&psci->bracket_less);
}
for (pCur = pCounter->pTriglist; pCur; pCur = pCur->next) for (pCur = pCounter->pTriglist; pCur; pCur = pCur->next)
{ {