Refactor PictureInitIndexedFormats.

The plural version is now static, which is fine since it was only ever called
from within picture post-init anyway.  The body of the work is now done with
a one-shot (public) function that operates on a single format at a time.
This commit is contained in:
Adam Jackson 2007-07-29 14:16:10 -04:00
parent ae7f71a8b3
commit 6f44a2c8a8
2 changed files with 25 additions and 25 deletions

View File

@ -452,6 +452,28 @@ PictureFindVisual (ScreenPtr pScreen, VisualID visual)
}
Bool
PictureInitIndexedFormat(ScreenPtr pScreen, PictFormatPtr format)
{
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
if (format->type != PictTypeIndexed || format->index.pColormap)
return TRUE;
if (format->index.vid == pScreen->rootVisual) {
format->index.pColormap =
(ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP);
} else {
VisualPtr pVisual = PictureFindVisual(pScreen, format->index.vid);
if (!CreateColormap(FakeClientID (0), pScreen, pVisual,
&format->index.pColormap, AllocNone, 0))
return FALSE;
}
if (!ps->InitIndexed(pScreen, format))
return FALSE;
return TRUE;
}
static Bool
PictureInitIndexedFormats (ScreenPtr pScreen)
{
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
@ -463,30 +485,8 @@ PictureInitIndexedFormats (ScreenPtr pScreen)
format = ps->formats;
nformat = ps->nformats;
while (nformat--)
{
if (format->type == PictTypeIndexed && !format->index.pColormap)
{
if (format->index.vid == pScreen->rootVisual)
format->index.pColormap = (ColormapPtr) LookupIDByType(pScreen->defColormap,
RT_COLORMAP);
else
{
VisualPtr pVisual;
pVisual = PictureFindVisual (pScreen, format->index.vid);
if (CreateColormap (FakeClientID (0), pScreen,
pVisual,
&format->index.pColormap, AllocNone,
0) != Success)
{
return FALSE;
}
}
if (!(*ps->InitIndexed) (pScreen, format))
return FALSE;
}
format++;
}
if (!PictureInitIndexedFormat(pScreen, format++))
return FALSE;
return TRUE;
}

View File

@ -449,7 +449,7 @@ void
PictureStoreColors (ColormapPtr pColormap, int ndef, xColorItem *pdef);
Bool
PictureInitIndexedFormats (ScreenPtr pScreen);
PictureInitIndexedFormat (ScreenPtr pScreen, PictFormatPtr format);
Bool
PictureSetSubpixelOrder (ScreenPtr pScreen, int subpixel);