fix visual picker :)

SVN revision: 3469
This commit is contained in:
Carsten Haitzler 2000-09-15 14:34:31 +00:00
parent 1051a20dd2
commit 0acbe99fd1
1 changed files with 14 additions and 10 deletions

View File

@ -30,20 +30,30 @@ Visual *
__imlib_BestVisual(Display *d, int screen, int *depth_return)
{
XVisualInfo xvi, *xvir;
int i, num, maxd = 0;
int j, i, num, maxd = 0;
Visual *v = NULL;
const int visprefs[] =
{PseudoColor, TrueColor, DirectColor, StaticColor, GrayScale, StaticGray};
xvi.screen = screen;
for (xvi.class = TrueColor; xvi.class >= StaticGray; xvi.class--)
maxd = 0;
for (j = 0; j < 6; j++)
{
xvi.class = visprefs[j];
xvir = XGetVisualInfo(d, VisualScreenMask | VisualClassMask,
&xvi, &num);
if (xvir)
{
maxd = 0;
for (i = 0; i < num; i++)
{
if ((xvir[i].depth > maxd) &&
if ((xvir[i].depth == 8) &&
(xvir[i].depth >= maxd) &&
(xvi.class == PseudoColor))
{
maxd = xvir[i].depth;
v = xvir[i].visual;
}
else if ((xvir[i].depth > maxd) &&
(xvir[i].depth <= 24))
{
maxd = xvir[i].depth;
@ -52,12 +62,6 @@ __imlib_BestVisual(Display *d, int screen, int *depth_return)
}
XFree(xvir);
}
if (v)
{
if (depth_return)
*depth_return = maxd;
return v;
}
}
if (depth_return)
*depth_return = maxd;