mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-22 20:50:06 +01:00
Add proper screen compare code.
This commit is contained in:
parent
8c4a73f196
commit
efbfefb735
2 changed files with 101 additions and 3 deletions
|
|
@ -1224,8 +1224,106 @@ static Bool dmxCompareScreens(DMXScreenInfo *new, DMXScreenInfo *old)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* hack */
|
#ifdef PANORAMIX
|
||||||
|
if (!noPanoramiXExtension)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
|
||||||
|
old = dmxScreens; /* each new screen must much the first screen */
|
||||||
|
|
||||||
|
if (new->beDepth != old->beDepth)
|
||||||
|
{
|
||||||
|
dmxLog (dmxWarning,
|
||||||
|
"New screen depth is not %d\n",
|
||||||
|
old->beDepth);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (new->beBPP != old->beBPP)
|
||||||
|
{
|
||||||
|
dmxLog (dmxWarning,
|
||||||
|
"New screen BPP is not %d\n",
|
||||||
|
old->beBPP);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < old->beNumDepths; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < new->beNumDepths; j++)
|
||||||
|
if (new->beDepths[j] == old->beDepths[i])
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (j == new->beNumDepths)
|
||||||
|
{
|
||||||
|
dmxLog (dmxWarning,
|
||||||
|
"New screen doesn't support depth %d\n",
|
||||||
|
old->beDepths[i]);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < old->beNumPixmapFormats; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < new->beNumPixmapFormats; j++)
|
||||||
|
if (new->bePixmapFormats[j].depth ==
|
||||||
|
old->bePixmapFormats[i].depth &&
|
||||||
|
new->bePixmapFormats[j].bits_per_pixel ==
|
||||||
|
old->bePixmapFormats[i].bits_per_pixel &&
|
||||||
|
new->bePixmapFormats[j].scanline_pad ==
|
||||||
|
old->bePixmapFormats[i].scanline_pad)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (j == new->beNumPixmapFormats)
|
||||||
|
{
|
||||||
|
dmxLog (dmxWarning,
|
||||||
|
"New screen doesn't support pixmap format "
|
||||||
|
"depth=%d,bits_per_pixel=%d,scanline_pad=%d\n",
|
||||||
|
old->bePixmapFormats[i].depth,
|
||||||
|
old->bePixmapFormats[i].bits_per_pixel,
|
||||||
|
old->bePixmapFormats[i].scanline_pad);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < old->beNumVisuals; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; j < new->beNumVisuals; j++)
|
||||||
|
if (new->beVisuals[j].depth ==
|
||||||
|
old->beVisuals[i].depth &&
|
||||||
|
new->beVisuals[j].class ==
|
||||||
|
old->beVisuals[i].class &&
|
||||||
|
new->beVisuals[j].red_mask ==
|
||||||
|
old->beVisuals[i].red_mask &&
|
||||||
|
new->beVisuals[j].green_mask ==
|
||||||
|
old->beVisuals[i].green_mask &&
|
||||||
|
new->beVisuals[j].blue_mask ==
|
||||||
|
old->beVisuals[i].blue_mask &&
|
||||||
|
new->beVisuals[j].colormap_size ==
|
||||||
|
old->beVisuals[i].colormap_size &&
|
||||||
|
new->beVisuals[j].bits_per_rgb ==
|
||||||
|
old->beVisuals[i].bits_per_rgb)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (j == new->beNumVisuals)
|
||||||
|
{
|
||||||
|
dmxLog (dmxWarning,
|
||||||
|
"New screen doesn't support visual "
|
||||||
|
"depth=%d,class=%d,red_mask=%d,green_mask=%d,"
|
||||||
|
"blue_mask=%d,colormap_size=%d,bits_per_rgb=%d\n",
|
||||||
|
old->beVisuals[i].depth,
|
||||||
|
old->beVisuals[i].class,
|
||||||
|
old->beVisuals[i].red_mask,
|
||||||
|
old->beVisuals[i].green_mask,
|
||||||
|
old->beVisuals[i].blue_mask,
|
||||||
|
old->beVisuals[i].colormap_size,
|
||||||
|
old->beVisuals[i].bits_per_rgb);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (new->beWidth != old->beWidth) return FALSE;
|
if (new->beWidth != old->beWidth) return FALSE;
|
||||||
if (new->beHeight != old->beHeight) return FALSE;
|
if (new->beHeight != old->beHeight) return FALSE;
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ Visual *dmxLookupVisual(ScreenPtr pScreen, VisualPtr pVisual)
|
||||||
for (i = 0; i < dmxScreen->beNumVisuals; i++) {
|
for (i = 0; i < dmxScreen->beNumVisuals; i++) {
|
||||||
if (pVisual->class == dmxScreen->beVisuals[i].class &&
|
if (pVisual->class == dmxScreen->beVisuals[i].class &&
|
||||||
pVisual->bitsPerRGBValue == dmxScreen->beVisuals[i].bits_per_rgb &&
|
pVisual->bitsPerRGBValue == dmxScreen->beVisuals[i].bits_per_rgb &&
|
||||||
// pVisual->ColormapEntries == dmxScreen->beVisuals[i].colormap_size &&
|
pVisual->ColormapEntries == dmxScreen->beVisuals[i].colormap_size &&
|
||||||
pVisual->nplanes == dmxScreen->beVisuals[i].depth &&
|
pVisual->nplanes == dmxScreen->beVisuals[i].depth &&
|
||||||
pVisual->redMask == dmxScreen->beVisuals[i].red_mask &&
|
pVisual->redMask == dmxScreen->beVisuals[i].red_mask &&
|
||||||
pVisual->greenMask == dmxScreen->beVisuals[i].green_mask &&
|
pVisual->greenMask == dmxScreen->beVisuals[i].green_mask &&
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue