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:
parent
ae7f71a8b3
commit
6f44a2c8a8
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user