modes: De-duplicate a clock range check.

Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2009-10-26 15:10:30 -04:00
parent 25236d19e6
commit ba2d39dd54

View File

@ -249,6 +249,15 @@ xf86ShowClockRanges(ScrnInfoPtr scrp, ClockRangePtr clockRanges)
} }
} }
static Bool
modeInClockRange(ClockRangePtr cp, DisplayModePtr p)
{
return ((p->Clock >= cp->minClock) &&
(p->Clock <= cp->maxClock) &&
(cp->interlaceAllowed || !(p->Flags & V_INTERLACE)) &&
(cp->doubleScanAllowed ||
((p->VScan <= 1) && !(p->Flags & V_DBLSCAN))));
}
/* /*
* xf86FindClockRangeForMode() [... like the name says ...] * xf86FindClockRangeForMode() [... like the name says ...]
@ -259,12 +268,7 @@ xf86FindClockRangeForMode(ClockRangePtr clockRanges, DisplayModePtr p)
ClockRangePtr cp; ClockRangePtr cp;
for (cp = clockRanges; ; cp = cp->next) for (cp = clockRanges; ; cp = cp->next)
if (!cp || if (!cp || modeInClockRange(cp, p))
((p->Clock >= cp->minClock) &&
(p->Clock <= cp->maxClock) &&
(cp->interlaceAllowed || !(p->Flags & V_INTERLACE)) &&
(cp->doubleScanAllowed ||
((p->VScan <= 1) && !(p->Flags & V_DBLSCAN)))))
return cp; return cp;
} }
@ -979,11 +983,7 @@ xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags)
if (scrp->progClock) { if (scrp->progClock) {
/* Check clock is in range */ /* Check clock is in range */
for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) { for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) {
if ((cp->minClock <= mode->Clock) && if (modeInClockRange(cp, mode))
(cp->maxClock >= mode->Clock) &&
(cp->interlaceAllowed || !(mode->Flags & V_INTERLACE)) &&
(cp->doubleScanAllowed ||
((!(mode->Flags & V_DBLSCAN)) && (mode->VScan <= 1))))
break; break;
} }
if (cp == NULL) { if (cp == NULL) {
@ -999,12 +999,7 @@ xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode, int flags)
status = MODE_CLOCK_RANGE; status = MODE_CLOCK_RANGE;
/* Check clock is in range */ /* Check clock is in range */
for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) { for (cp = scrp->clockRanges; cp != NULL; cp = cp->next) {
if ((cp->minClock <= mode->Clock) && if (modeInClockRange(cp, mode)) {
(cp->maxClock >= mode->Clock) &&
(cp->interlaceAllowed || !(mode->Flags & V_INTERLACE)) &&
(cp->doubleScanAllowed ||
((!(mode->Flags & V_DBLSCAN)) && (mode->VScan <= 1)))) {
/* /*
* Clock is in range, so if it is not a programmable clock, * Clock is in range, so if it is not a programmable clock,
* find a matching clock. * find a matching clock.