aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xfree86/common
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/xfree86/common')
-rw-r--r--xorg-server/hw/xfree86/common/xf86DGA.c2
-rw-r--r--xorg-server/hw/xfree86/common/xf86Init.c3
-rw-r--r--xorg-server/hw/xfree86/common/xf86Module.h6
-rw-r--r--xorg-server/hw/xfree86/common/xf86Xinput.c2
-rw-r--r--xorg-server/hw/xfree86/common/xf86cmap.c49
-rw-r--r--xorg-server/hw/xfree86/common/xf86xv.c27
6 files changed, 47 insertions, 42 deletions
diff --git a/xorg-server/hw/xfree86/common/xf86DGA.c b/xorg-server/hw/xfree86/common/xf86DGA.c
index 804fd37c1..1a1032786 100644
--- a/xorg-server/hw/xfree86/common/xf86DGA.c
+++ b/xorg-server/hw/xfree86/common/xf86DGA.c
@@ -731,7 +731,7 @@ DGAInstallCmap(ColormapPtr cmap)
/* We rely on the extension to check that DGA is active */
if(!pScreenPriv->dgaColormap)
- pScreenPriv->savedColormap = miInstalledMaps[pScreen->myNum];
+ pScreenPriv->savedColormap = GetInstalledmiColormap(pScreen);
pScreenPriv->dgaColormap = cmap;
diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c
index 03a29ea0f..55d7a6209 100644
--- a/xorg-server/hw/xfree86/common/xf86Init.c
+++ b/xorg-server/hw/xfree86/common/xf86Init.c
@@ -552,9 +552,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
xf86Initialising = TRUE;
if (serverGeneration == 1) {
-
- pScreenInfo->numScreens = 0;
-
if ((xf86ServerName = strrchr(argv[0], '/')) != 0)
xf86ServerName++;
else
diff --git a/xorg-server/hw/xfree86/common/xf86Module.h b/xorg-server/hw/xfree86/common/xf86Module.h
index bbf5786c9..d61758f78 100644
--- a/xorg-server/hw/xfree86/common/xf86Module.h
+++ b/xorg-server/hw/xfree86/common/xf86Module.h
@@ -82,9 +82,9 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
-#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(7, 0)
-#define ABI_XINPUT_VERSION SET_ABI_VERSION(9, 0)
-#define ABI_EXTENSION_VERSION SET_ABI_VERSION(3, 0)
+#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(8, 0)
+#define ABI_XINPUT_VERSION SET_ABI_VERSION(10, 0)
+#define ABI_EXTENSION_VERSION SET_ABI_VERSION(4, 0)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)
#define MODINFOSTRING1 0xef23fdc5
diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c
index dba3370f3..a1a5527f4 100644
--- a/xorg-server/hw/xfree86/common/xf86Xinput.c
+++ b/xorg-server/hw/xfree86/common/xf86Xinput.c
@@ -825,7 +825,7 @@ NewInputDeviceRequest (InputOption *options, InputAttributes *attrs,
}
if (!idev->driver || !idev->identifier) {
- xf86Msg(X_ERROR, "No input driver/identifier specified (ignoring)\n");
+ xf86Msg(X_INFO, "No input driver/identifier specified (ignoring)\n");
rval = BadRequest;
goto unwind;
}
diff --git a/xorg-server/hw/xfree86/common/xf86cmap.c b/xorg-server/hw/xfree86/common/xf86cmap.c
index f60d96e7d..e266ffb6d 100644
--- a/xorg-server/hw/xfree86/common/xf86cmap.c
+++ b/xorg-server/hw/xfree86/common/xf86cmap.c
@@ -63,10 +63,10 @@
#define SCREEN_EPILOGUE(pScreen, field, wrapper)\
((pScreen)->field = wrapper)
-#define LOAD_PALETTE(pmap, index) \
- ((pmap == miInstalledMaps[index]) && \
+#define LOAD_PALETTE(pmap) \
+ ((pmap == GetInstalledmiColormap(pmap->pScreen)) && \
((pScreenPriv->flags & CMAP_LOAD_EVEN_IF_OFFSCREEN) || \
- xf86Screens[index]->vtSema || pScreenPriv->isDGAmode))
+ xf86Screens[pmap->pScreen->myNum]->vtSema || pScreenPriv->isDGAmode))
typedef struct _CMapLink {
@@ -221,7 +221,7 @@ Bool xf86HandleColormaps(
}
/* Force the initial map to be loaded */
- miInstalledMaps[pScreen->myNum] = NULL;
+ SetInstalledmiColormap(pScreen, NULL);
CMapInstallColormap(pDefMap);
return TRUE;
}
@@ -425,11 +425,10 @@ static void
CMapInstallColormap(ColormapPtr pmap)
{
ScreenPtr pScreen = pmap->pScreen;
- int index = pScreen->myNum;
CMapScreenPtr pScreenPriv = (CMapScreenPtr)dixLookupPrivate(
&pScreen->devPrivates, CMapScreenKey);
- if (pmap == miInstalledMaps[index])
+ if (pmap == GetInstalledmiColormap(pmap->pScreen))
return;
pScreen->InstallColormap = pScreenPriv->InstallColormap;
@@ -438,15 +437,15 @@ CMapInstallColormap(ColormapPtr pmap)
/* Important. We let the lower layers, namely DGA,
overwrite the choice of Colormap to install */
- if (miInstalledMaps[index])
- pmap = miInstalledMaps[index];
+ if (GetInstalledmiColormap(pmap->pScreen))
+ pmap = GetInstalledmiColormap(pmap->pScreen);
if (!(pScreenPriv->flags & CMAP_PALETTED_TRUECOLOR) &&
(pmap->pVisual->class == TrueColor) &&
CMapColormapUseMax(pmap->pVisual, pScreenPriv))
return;
- if(LOAD_PALETTE(pmap, index))
+ if(LOAD_PALETTE(pmap))
CMapReinstallMap(pmap);
}
@@ -461,8 +460,8 @@ CMapEnterVT(int index, int flags)
&pScreen->devPrivates, CMapScreenKey);
if((*pScreenPriv->EnterVT)(index, flags)) {
- if(miInstalledMaps[index])
- CMapReinstallMap(miInstalledMaps[index]);
+ if(GetInstalledmiColormap(pScreen))
+ CMapReinstallMap(GetInstalledmiColormap(pScreen));
return TRUE;
}
return FALSE;
@@ -477,8 +476,8 @@ CMapSwitchMode(int index, DisplayModePtr mode, int flags)
&pScreen->devPrivates, CMapScreenKey);
if((*pScreenPriv->SwitchMode)(index, mode, flags)) {
- if(miInstalledMaps[index])
- CMapReinstallMap(miInstalledMaps[index]);
+ if(GetInstalledmiColormap(pScreen))
+ CMapReinstallMap(GetInstalledmiColormap(pScreen));
return TRUE;
}
return FALSE;
@@ -497,9 +496,9 @@ CMapSetDGAMode(int index, int num, DGADevicePtr dev)
pScreenPriv->isDGAmode = DGAActive(index);
- if(!pScreenPriv->isDGAmode && miInstalledMaps[index]
+ if(!pScreenPriv->isDGAmode && GetInstalledmiColormap(pScreen)
&& xf86Screens[pScreen->myNum]->vtSema)
- CMapReinstallMap(miInstalledMaps[index]);
+ CMapReinstallMap(GetInstalledmiColormap(pScreen));
return ret;
}
@@ -649,7 +648,7 @@ CMapRefreshColors(ColormapPtr pmap, int defs, int* indices)
}
- if(LOAD_PALETTE(pmap, pmap->pScreen->myNum))
+ if(LOAD_PALETTE(pmap))
(*pScrn->LoadPalette)(pScreenPriv->pScrn, defs, indices,
colors, pmap->pVisual);
@@ -802,7 +801,7 @@ CMapSetOverscan(ColormapPtr pmap, int defs, int *indices)
}
if (newOverscan) {
pColPriv->overscan = overscan;
- if (LOAD_PALETTE(pmap, pmap->pScreen->myNum)) {
+ if (LOAD_PALETTE(pmap)) {
#ifdef DEBUGOVERSCAN
ErrorF("SetOverscan() called from CmapSetOverscan\n");
#endif
@@ -929,10 +928,10 @@ CMapChangeGamma(
pLink = pLink->next;
}
- if(miInstalledMaps[pScreen->myNum] &&
+ if(GetInstalledmiColormap(pScreen) &&
((pScreenPriv->flags & CMAP_LOAD_EVEN_IF_OFFSCREEN) ||
pScrn->vtSema || pScreenPriv->isDGAmode)) {
- ColormapPtr pMap = miInstalledMaps[pScreen->myNum];
+ ColormapPtr pMap = GetInstalledmiColormap(pScreen);
if (!(pScreenPriv->flags & CMAP_PALETTED_TRUECOLOR) &&
(pMap->pVisual->class == TrueColor) &&
@@ -951,9 +950,9 @@ CMapChangeGamma(
if(pLink) {
/* need to trick CMapRefreshColors() into thinking
this is the currently installed map */
- miInstalledMaps[pScreen->myNum] = pLink->cmap;
+ SetInstalledmiColormap(pScreen, pLink->cmap);
CMapReinstallMap(pLink->cmap);
- miInstalledMaps[pScreen->myNum] = pMap;
+ SetInstalledmiColormap(pScreen, pMap);
}
} else
CMapReinstallMap(pMap);
@@ -1035,10 +1034,10 @@ xf86ChangeGammaRamp(
pLink = pLink->next;
}
- if(miInstalledMaps[pScreen->myNum] &&
+ if(GetInstalledmiColormap(pScreen) &&
((pScreenPriv->flags & CMAP_LOAD_EVEN_IF_OFFSCREEN) ||
pScrn->vtSema || pScreenPriv->isDGAmode)) {
- ColormapPtr pMap = miInstalledMaps[pScreen->myNum];
+ ColormapPtr pMap = GetInstalledmiColormap(pScreen);
if (!(pScreenPriv->flags & CMAP_PALETTED_TRUECOLOR) &&
(pMap->pVisual->class == TrueColor) &&
@@ -1057,9 +1056,9 @@ xf86ChangeGammaRamp(
if(pLink) {
/* need to trick CMapRefreshColors() into thinking
this is the currently installed map */
- miInstalledMaps[pScreen->myNum] = pLink->cmap;
+ SetInstalledmiColormap(pScreen, pLink->cmap);
CMapReinstallMap(pLink->cmap);
- miInstalledMaps[pScreen->myNum] = pMap;
+ SetInstalledmiColormap(pScreen, pMap);
}
} else
CMapReinstallMap(pMap);
diff --git a/xorg-server/hw/xfree86/common/xf86xv.c b/xorg-server/hw/xfree86/common/xf86xv.c
index bdcc4fc2b..2cc2f6093 100644
--- a/xorg-server/hw/xfree86/common/xf86xv.c
+++ b/xorg-server/hw/xfree86/common/xf86xv.c
@@ -186,7 +186,9 @@ typedef struct {
int num;
} OffscreenImageRec;
-static OffscreenImageRec OffscreenImages[MAXSCREENS];
+static int OffscreenPrivateKeyIndex;
+static DevPrivateKey OffscreenPrivateKey = &OffscreenPrivateKeyIndex;
+#define GetOffscreenImage(pScreen) ((OffscreenImageRec *) dixLookupPrivate(&(pScreen)->devPrivates, OffscreenPrivateKey))
Bool
xf86XVRegisterOffscreenImages(
@@ -194,9 +196,18 @@ xf86XVRegisterOffscreenImages(
XF86OffscreenImagePtr images,
int num
){
- OffscreenImages[pScreen->myNum].num = num;
- OffscreenImages[pScreen->myNum].images = images;
-
+ OffscreenImageRec *OffscreenImage;
+ /* This function may be called before xf86XVScreenInit, so there's
+ * no better place than this to call dixRequestPrivate to ensure we
+ * have space reserved. After the first call it is a no-op. */
+ if(!dixRequestPrivate(OffscreenPrivateKey, sizeof(OffscreenImageRec)) ||
+ !(OffscreenImage = GetOffscreenImage(pScreen)))
+ /* Every X.org driver assumes this function always succeeds, so
+ * just die on allocation failure. */
+ FatalError("Could not allocate private storage for XV offscreen images.\n");
+
+ OffscreenImage->num = num;
+ OffscreenImage->images = images;
return TRUE;
}
@@ -205,8 +216,9 @@ xf86XVQueryOffscreenImages(
ScreenPtr pScreen,
int *num
){
- *num = OffscreenImages[pScreen->myNum].num;
- return OffscreenImages[pScreen->myNum].images;
+ OffscreenImageRec *OffscreenImage = GetOffscreenImage(pScreen);
+ *num = OffscreenImage->num;
+ return OffscreenImage->images;
}
@@ -1177,9 +1189,6 @@ xf86XVCloseScreen(int i, ScreenPtr pScreen)
XvAdaptorPtr pa;
int c;
- /* Clear offscreen images */
- memset(&OffscreenImages[pScreen->myNum], 0, sizeof(OffscreenImages[0]));
-
if(!ScreenPriv) return TRUE;
if(ScreenPriv->videoGC) {