fb: Remove fbcmap.c (bug 5436)
This is obsolete since a240c039c4
.
Updated fb.h to mention that the functions come from fbcmap_mi.c now.
Dropped fbcmap.c from the makefile.
Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
23e329b564
commit
84e8de1271
|
@ -55,4 +55,4 @@ libfb_la_SOURCES = \
|
|||
|
||||
libwfb_la_SOURCES = $(libfb_la_SOURCES)
|
||||
|
||||
EXTRA_DIST = fbcmap.c fbcmap_mi.c
|
||||
EXTRA_DIST = fbcmap_mi.c
|
||||
|
|
2
fb/fb.h
2
fb/fb.h
|
@ -1262,7 +1262,7 @@ fbBltPlane (FbBits *src,
|
|||
Pixel planeMask);
|
||||
|
||||
/*
|
||||
* fbcmap.c
|
||||
* fbcmap_mi.c
|
||||
*/
|
||||
extern _X_EXPORT int
|
||||
fbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps);
|
||||
|
|
586
fb/fbcmap.c
586
fb/fbcmap.c
|
@ -1,586 +0,0 @@
|
|||
/*
|
||||
* Copyright © 1987 Sun Microsystems, Inc. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/X.h>
|
||||
#include <X11/Xproto.h>
|
||||
#include "scrnintstr.h"
|
||||
#include "colormapst.h"
|
||||
#include "resource.h"
|
||||
#include "fb.h"
|
||||
|
||||
#ifdef XFree86Server
|
||||
#error "You should be compiling fbcmap_mi.c instead of fbcmap.c!"
|
||||
#endif
|
||||
|
||||
static DevPrivateKeyRec cmapScrPrivateKeyRec;
|
||||
#define cmapScrPrivateKey (&cmapScrPrivateKeyRec)
|
||||
|
||||
#define GetInstalledColormap(s) ((ColormapPtr) dixLookupPrivate(&(s)->devPrivates, cmapScrPrivateKey))
|
||||
#define SetInstalledColormap(s,c) (dixSetPrivate(&(s)->devPrivates, cmapScrPrivateKey, c))
|
||||
|
||||
int
|
||||
fbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
|
||||
{
|
||||
/* By the time we are processing requests, we can guarantee that there
|
||||
* is always a colormap installed */
|
||||
*pmaps = GetInstalledColormap(pScreen)->mid;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
fbInstallColormap(ColormapPtr pmap)
|
||||
{
|
||||
ColormapPtr oldpmap = GetInstalledColormap(pmap->pScreen);
|
||||
|
||||
if(pmap != oldpmap)
|
||||
{
|
||||
/* Uninstall pInstalledMap. No hardware changes required, just
|
||||
* notify all interested parties. */
|
||||
if(oldpmap != (ColormapPtr)None)
|
||||
WalkTree(pmap->pScreen, TellLostMap, (char *)&oldpmap->mid);
|
||||
/* Install pmap */
|
||||
SetInstalledColormap(pmap->pScreen, pmap);
|
||||
WalkTree(pmap->pScreen, TellGainedMap, (char *)&pmap->mid);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fbUninstallColormap(ColormapPtr pmap)
|
||||
{
|
||||
ColormapPtr curpmap = GetInstalledColormap(pmap->pScreen);
|
||||
|
||||
if(pmap == curpmap)
|
||||
{
|
||||
if (pmap->mid != pmap->pScreen->defColormap)
|
||||
{
|
||||
dixLookupResourceByType((pointer *)&curpmap,
|
||||
pmap->pScreen->defColormap,
|
||||
RT_COLORMAP,
|
||||
serverClient, DixInstallAccess);
|
||||
(*pmap->pScreen->InstallColormap)(curpmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fbResolveColor(unsigned short *pred,
|
||||
unsigned short *pgreen,
|
||||
unsigned short *pblue,
|
||||
VisualPtr pVisual)
|
||||
{
|
||||
int shift = 16 - pVisual->bitsPerRGBValue;
|
||||
unsigned lim = (1 << pVisual->bitsPerRGBValue) - 1;
|
||||
|
||||
if ((pVisual->class | DynamicClass) == GrayScale)
|
||||
{
|
||||
/* rescale to gray then rgb bits */
|
||||
*pred = (30L * *pred + 59L * *pgreen + 11L * *pblue) / 100;
|
||||
*pblue = *pgreen = *pred = ((*pred >> shift) * 65535) / lim;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* rescale to rgb bits */
|
||||
*pred = ((*pred >> shift) * 65535) / lim;
|
||||
*pgreen = ((*pgreen >> shift) * 65535) / lim;
|
||||
*pblue = ((*pblue >> shift) * 65535) / lim;
|
||||
}
|
||||
}
|
||||
|
||||
Bool
|
||||
fbInitializeColormap(ColormapPtr pmap)
|
||||
{
|
||||
register unsigned i;
|
||||
register VisualPtr pVisual;
|
||||
unsigned lim, maxent, shift;
|
||||
|
||||
pVisual = pmap->pVisual;
|
||||
lim = (1 << pVisual->bitsPerRGBValue) - 1;
|
||||
shift = 16 - pVisual->bitsPerRGBValue;
|
||||
maxent = pVisual->ColormapEntries - 1;
|
||||
if (pVisual->class == TrueColor)
|
||||
{
|
||||
unsigned limr, limg, limb;
|
||||
|
||||
limr = pVisual->redMask >> pVisual->offsetRed;
|
||||
limg = pVisual->greenMask >> pVisual->offsetGreen;
|
||||
limb = pVisual->blueMask >> pVisual->offsetBlue;
|
||||
for(i = 0; i <= maxent; i++)
|
||||
{
|
||||
/* rescale to [0..65535] then rgb bits */
|
||||
pmap->red[i].co.local.red =
|
||||
((((i * 65535) / limr) >> shift) * 65535) / lim;
|
||||
pmap->green[i].co.local.green =
|
||||
((((i * 65535) / limg) >> shift) * 65535) / lim;
|
||||
pmap->blue[i].co.local.blue =
|
||||
((((i * 65535) / limb) >> shift) * 65535) / lim;
|
||||
}
|
||||
}
|
||||
else if (pVisual->class == StaticColor)
|
||||
{
|
||||
unsigned n;
|
||||
unsigned r, g, b;
|
||||
unsigned red, green, blue;
|
||||
|
||||
for (n = 0; n*n*n < pVisual->ColormapEntries; n++)
|
||||
;
|
||||
n--;
|
||||
i = 0;
|
||||
for (r = 0; r < n; r++)
|
||||
{
|
||||
red = (((r * 65535 / (n - 1)) >> shift) * 65535) / lim;
|
||||
for (g = 0; g < n; g++)
|
||||
{
|
||||
green = (((g * 65535 / (n - 1)) >> shift) * 65535) / lim;
|
||||
for (b = 0; b < n; b++)
|
||||
{
|
||||
blue = (((b * 65535 / (n - 1)) >> shift) * 65535) / lim;
|
||||
pmap->red[i].co.local.red = red;
|
||||
pmap->red[i].co.local.green = green;
|
||||
pmap->red[i].co.local.blue = blue;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
n = pVisual->ColormapEntries - i;
|
||||
for (r = 0; r < n; r++)
|
||||
{
|
||||
red = (((r * 65535 / (n - 1)) >> shift) * 65535) / lim;
|
||||
pmap->red[i].co.local.red = red;
|
||||
pmap->red[i].co.local.green = red;
|
||||
pmap->red[i].co.local.blue = red;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else if (pVisual->class == StaticGray)
|
||||
{
|
||||
for(i = 0; i <= maxent; i++)
|
||||
{
|
||||
/* rescale to [0..65535] then rgb bits */
|
||||
pmap->red[i].co.local.red = ((((i * 65535) / maxent) >> shift)
|
||||
* 65535) / lim;
|
||||
pmap->red[i].co.local.green = pmap->red[i].co.local.red;
|
||||
pmap->red[i].co.local.blue = pmap->red[i].co.local.red;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* When simulating DirectColor on PseudoColor hardware, multiple
|
||||
entries of the colormap must be updated
|
||||
*/
|
||||
|
||||
#define AddElement(mask) { \
|
||||
pixel = red | green | blue; \
|
||||
for (i = 0; i < nresult; i++) \
|
||||
if (outdefs[i].pixel == pixel) \
|
||||
break; \
|
||||
if (i == nresult) \
|
||||
{ \
|
||||
nresult++; \
|
||||
outdefs[i].pixel = pixel; \
|
||||
outdefs[i].flags = 0; \
|
||||
} \
|
||||
outdefs[i].flags |= (mask); \
|
||||
outdefs[i].red = pmap->red[red >> pVisual->offsetRed].co.local.red; \
|
||||
outdefs[i].green = pmap->green[green >> pVisual->offsetGreen].co.local.green; \
|
||||
outdefs[i].blue = pmap->blue[blue >> pVisual->offsetBlue].co.local.blue; \
|
||||
}
|
||||
|
||||
int
|
||||
fbExpandDirectColors (ColormapPtr pmap,
|
||||
int ndef,
|
||||
xColorItem *indefs,
|
||||
xColorItem *outdefs)
|
||||
{
|
||||
register int red, green, blue;
|
||||
int maxred, maxgreen, maxblue;
|
||||
int stepred, stepgreen, stepblue;
|
||||
VisualPtr pVisual;
|
||||
register int pixel;
|
||||
register int nresult;
|
||||
register int i;
|
||||
|
||||
pVisual = pmap->pVisual;
|
||||
|
||||
stepred = 1 << pVisual->offsetRed;
|
||||
stepgreen = 1 << pVisual->offsetGreen;
|
||||
stepblue = 1 << pVisual->offsetBlue;
|
||||
maxred = pVisual->redMask;
|
||||
maxgreen = pVisual->greenMask;
|
||||
maxblue = pVisual->blueMask;
|
||||
nresult = 0;
|
||||
for (;ndef--; indefs++)
|
||||
{
|
||||
if (indefs->flags & DoRed)
|
||||
{
|
||||
red = indefs->pixel & pVisual->redMask;
|
||||
for (green = 0; green <= maxgreen; green += stepgreen)
|
||||
{
|
||||
for (blue = 0; blue <= maxblue; blue += stepblue)
|
||||
{
|
||||
AddElement (DoRed)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (indefs->flags & DoGreen)
|
||||
{
|
||||
green = indefs->pixel & pVisual->greenMask;
|
||||
for (red = 0; red <= maxred; red += stepred)
|
||||
{
|
||||
for (blue = 0; blue <= maxblue; blue += stepblue)
|
||||
{
|
||||
AddElement (DoGreen)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (indefs->flags & DoBlue)
|
||||
{
|
||||
blue = indefs->pixel & pVisual->blueMask;
|
||||
for (red = 0; red <= maxred; red += stepred)
|
||||
{
|
||||
for (green = 0; green <= maxgreen; green += stepgreen)
|
||||
{
|
||||
AddElement (DoBlue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nresult;
|
||||
}
|
||||
|
||||
Bool
|
||||
fbCreateDefColormap(ScreenPtr pScreen)
|
||||
{
|
||||
unsigned short zero = 0, ones = 0xFFFF;
|
||||
VisualPtr pVisual;
|
||||
ColormapPtr cmap;
|
||||
Pixel wp, bp;
|
||||
|
||||
for (pVisual = pScreen->visuals;
|
||||
pVisual->vid != pScreen->rootVisual;
|
||||
pVisual++)
|
||||
;
|
||||
|
||||
if (CreateColormap(pScreen->defColormap, pScreen, pVisual, &cmap,
|
||||
(pVisual->class & DynamicClass) ? AllocNone : AllocAll,
|
||||
0)
|
||||
!= Success)
|
||||
return FALSE;
|
||||
wp = pScreen->whitePixel;
|
||||
bp = pScreen->blackPixel;
|
||||
if ((AllocColor(cmap, &ones, &ones, &ones, &wp, 0) !=
|
||||
Success) ||
|
||||
(AllocColor(cmap, &zero, &zero, &zero, &bp, 0) !=
|
||||
Success))
|
||||
return FALSE;
|
||||
pScreen->whitePixel = wp;
|
||||
pScreen->blackPixel = bp;
|
||||
(*pScreen->InstallColormap)(cmap);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
extern int defaultColorVisualClass;
|
||||
|
||||
#define _RZ(d) ((d + 2) / 3)
|
||||
#define _RS(d) 0
|
||||
#define _RM(d) ((1 << _RZ(d)) - 1)
|
||||
#define _GZ(d) ((d - _RZ(d) + 1) / 2)
|
||||
#define _GS(d) _RZ(d)
|
||||
#define _GM(d) (((1 << _GZ(d)) - 1) << _GS(d))
|
||||
#define _BZ(d) (d - _RZ(d) - _GZ(d))
|
||||
#define _BS(d) (_RZ(d) + _GZ(d))
|
||||
#define _BM(d) (((1 << _BZ(d)) - 1) << _BS(d))
|
||||
#define _CE(d) (1 << _RZ(d))
|
||||
|
||||
#define MAX_PSEUDO_DEPTH 10 /* largest DAC size I know */
|
||||
|
||||
#define StaticGrayMask (1 << StaticGray)
|
||||
#define GrayScaleMask (1 << GrayScale)
|
||||
#define StaticColorMask (1 << StaticColor)
|
||||
#define PseudoColorMask (1 << PseudoColor)
|
||||
#define TrueColorMask (1 << TrueColor)
|
||||
#define DirectColorMask (1 << DirectColor)
|
||||
|
||||
#define ALL_VISUALS (StaticGrayMask|\
|
||||
GrayScaleMask|\
|
||||
StaticColorMask|\
|
||||
PseudoColorMask|\
|
||||
TrueColorMask|\
|
||||
DirectColorMask)
|
||||
|
||||
#define LARGE_VISUALS (TrueColorMask|\
|
||||
DirectColorMask)
|
||||
|
||||
typedef struct _fbVisuals {
|
||||
struct _fbVisuals *next;
|
||||
int depth;
|
||||
int bitsPerRGB;
|
||||
int visuals;
|
||||
int count;
|
||||
Pixel redMask, greenMask, blueMask;
|
||||
} fbVisualsRec, *fbVisualsPtr;
|
||||
|
||||
static const int fbVisualPriority[] = {
|
||||
PseudoColor, DirectColor, GrayScale, StaticColor, TrueColor, StaticGray
|
||||
};
|
||||
|
||||
#define NUM_PRIORITY 6
|
||||
|
||||
static fbVisualsPtr fbVisuals;
|
||||
|
||||
static int
|
||||
popCount (int i)
|
||||
{
|
||||
int count;
|
||||
|
||||
count = (i >> 1) & 033333333333;
|
||||
count = i - count - ((count >> 1) & 033333333333);
|
||||
count = (((count + (count >> 3)) & 030707070707) % 077); /* HAKMEM 169 */
|
||||
return count;
|
||||
}
|
||||
|
||||
/*
|
||||
* Distance to least significant one bit
|
||||
*/
|
||||
static int
|
||||
maskShift (Pixel p)
|
||||
{
|
||||
int s;
|
||||
|
||||
if (!p) return 0;
|
||||
s = 0;
|
||||
while (!(p & 1))
|
||||
{
|
||||
s++;
|
||||
p >>= 1;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
Bool
|
||||
fbSetVisualTypesAndMasks (int depth, int visuals, int bitsPerRGB,
|
||||
Pixel redMask, Pixel greenMask, Pixel blueMask)
|
||||
{
|
||||
fbVisualsPtr new, *prev, v;
|
||||
|
||||
new = (fbVisualsPtr) malloc(sizeof *new);
|
||||
if (!new)
|
||||
return FALSE;
|
||||
if (!redMask || !greenMask || !blueMask)
|
||||
{
|
||||
redMask = _RM(depth);
|
||||
greenMask = _GM(depth);
|
||||
blueMask = _BM(depth);
|
||||
}
|
||||
new->next = 0;
|
||||
new->depth = depth;
|
||||
new->visuals = visuals;
|
||||
new->bitsPerRGB = bitsPerRGB;
|
||||
new->redMask = redMask;
|
||||
new->greenMask = greenMask;
|
||||
new->blueMask = blueMask;
|
||||
new->count = popCount (visuals);
|
||||
for (prev = &fbVisuals; (v = *prev); prev = &v->next);
|
||||
*prev = new;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fbHasVisualTypes (int depth)
|
||||
{
|
||||
fbVisualsPtr v;
|
||||
|
||||
for (v = fbVisuals; v; v = v->next)
|
||||
if (v->depth == depth)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Bool
|
||||
fbSetVisualTypes (int depth, int visuals, int bitsPerRGB)
|
||||
{
|
||||
return fbSetVisualTypesAndMasks (depth, visuals, bitsPerRGB,
|
||||
_RM(depth), _GM(depth), _BM(depth));
|
||||
}
|
||||
|
||||
/*
|
||||
* Given a list of formats for a screen, create a list
|
||||
* of visuals and depths for the screen which coorespond to
|
||||
* the set which can be used with this version of fb.
|
||||
*/
|
||||
|
||||
Bool
|
||||
fbInitVisuals (VisualPtr *visualp,
|
||||
DepthPtr *depthp,
|
||||
int *nvisualp,
|
||||
int *ndepthp,
|
||||
int *rootDepthp,
|
||||
VisualID *defaultVisp,
|
||||
unsigned long sizes,
|
||||
int bitsPerRGB)
|
||||
{
|
||||
int i, j = 0, k;
|
||||
VisualPtr visual;
|
||||
DepthPtr depth;
|
||||
VisualID *vid;
|
||||
int d, b;
|
||||
int f;
|
||||
int ndepth, nvisual;
|
||||
int nvtype;
|
||||
int vtype;
|
||||
fbVisualsPtr visuals, nextVisuals;
|
||||
|
||||
/* none specified, we'll guess from pixmap formats */
|
||||
if (!fbVisuals)
|
||||
{
|
||||
for (f = 0; f < screenInfo.numPixmapFormats; f++)
|
||||
{
|
||||
d = screenInfo.formats[f].depth;
|
||||
b = screenInfo.formats[f].bitsPerPixel;
|
||||
if (sizes & (1 << (b - 1)))
|
||||
{
|
||||
if (d > MAX_PSEUDO_DEPTH)
|
||||
vtype = LARGE_VISUALS;
|
||||
else if (d == 1)
|
||||
vtype = StaticGrayMask;
|
||||
else
|
||||
vtype = ALL_VISUALS;
|
||||
}
|
||||
else
|
||||
vtype = 0;
|
||||
if (!fbSetVisualTypes (d, vtype, bitsPerRGB))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
nvisual = 0;
|
||||
ndepth = 0;
|
||||
for (visuals = fbVisuals; visuals; visuals = nextVisuals)
|
||||
{
|
||||
nextVisuals = visuals->next;
|
||||
ndepth++;
|
||||
nvisual += visuals->count;
|
||||
}
|
||||
depth = (DepthPtr) malloc(ndepth * sizeof (DepthRec));
|
||||
visual = (VisualPtr) malloc(nvisual * sizeof (VisualRec));
|
||||
if (!depth || !visual)
|
||||
{
|
||||
free(depth);
|
||||
free(visual);
|
||||
return FALSE;
|
||||
}
|
||||
*depthp = depth;
|
||||
*visualp = visual;
|
||||
*ndepthp = ndepth;
|
||||
*nvisualp = nvisual;
|
||||
for (visuals = fbVisuals; visuals; visuals = nextVisuals)
|
||||
{
|
||||
nextVisuals = visuals->next;
|
||||
d = visuals->depth;
|
||||
vtype = visuals->visuals;
|
||||
nvtype = visuals->count;
|
||||
vid = NULL;
|
||||
if (nvtype)
|
||||
{
|
||||
vid = (VisualID *) malloc(nvtype * sizeof (VisualID));
|
||||
if (!vid)
|
||||
return FALSE;
|
||||
}
|
||||
depth->depth = d;
|
||||
depth->numVids = nvtype;
|
||||
depth->vids = vid;
|
||||
depth++;
|
||||
for (i = 0; i < NUM_PRIORITY; i++) {
|
||||
if (! (vtype & (1 << fbVisualPriority[i])))
|
||||
continue;
|
||||
visual->class = fbVisualPriority[i];
|
||||
visual->bitsPerRGBValue = visuals->bitsPerRGB;
|
||||
visual->ColormapEntries = 1 << d;
|
||||
visual->nplanes = d;
|
||||
visual->vid = *vid = FakeClientID (0);
|
||||
switch (visual->class) {
|
||||
case PseudoColor:
|
||||
case GrayScale:
|
||||
case StaticGray:
|
||||
case StaticColor:
|
||||
visual->redMask = 0;
|
||||
visual->greenMask = 0;
|
||||
visual->blueMask = 0;
|
||||
visual->offsetRed = 0;
|
||||
visual->offsetGreen = 0;
|
||||
visual->offsetBlue = 0;
|
||||
break;
|
||||
case DirectColor:
|
||||
case TrueColor:
|
||||
visual->ColormapEntries = _CE(d);
|
||||
visual->redMask = visuals->redMask;
|
||||
visual->greenMask = visuals->greenMask;
|
||||
visual->blueMask = visuals->blueMask;
|
||||
visual->offsetRed = maskShift (visuals->redMask);
|
||||
visual->offsetGreen = maskShift (visuals->greenMask);
|
||||
visual->offsetBlue = maskShift (visuals->blueMask);
|
||||
}
|
||||
vid++;
|
||||
visual++;
|
||||
}
|
||||
free(visuals);
|
||||
}
|
||||
fbVisuals = NULL;
|
||||
visual = *visualp;
|
||||
depth = *depthp;
|
||||
for (i = 0; i < ndepth; i++)
|
||||
{
|
||||
if (*rootDepthp && *rootDepthp != depth[i].depth)
|
||||
continue;
|
||||
for (j = 0; j < depth[i].numVids; j++)
|
||||
{
|
||||
for (k = 0; k < nvisual; k++)
|
||||
if (visual[k].vid == depth[i].vids[j])
|
||||
break;
|
||||
if (k == nvisual)
|
||||
continue;
|
||||
if (defaultColorVisualClass < 0 ||
|
||||
visual[k].class == defaultColorVisualClass)
|
||||
break;
|
||||
}
|
||||
if (j != depth[i].numVids)
|
||||
break;
|
||||
}
|
||||
if (i == ndepth) {
|
||||
for (i = 0; i < ndepth; i++)
|
||||
{
|
||||
if (depth[i].numVids)
|
||||
break;
|
||||
}
|
||||
if (i == ndepth)
|
||||
return FALSE;
|
||||
j = 0;
|
||||
}
|
||||
*rootDepthp = depth[i].depth;
|
||||
*defaultVisp = depth[i].vids[j];
|
||||
return TRUE;
|
||||
}
|
Loading…
Reference in New Issue