summaryrefslogtreecommitdiff
path: root/hw/vfb
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2014-06-10 12:54:41 -0400
committerAdam Jackson <ajax@redhat.com>2014-10-08 10:10:39 +0200
commit3689be96ac125c9bfca9d37de4878f05f4e2f584 (patch)
tree4629fcbb51b16f1abed1fef30dc414413e42d4f5 /hw/vfb
parent692676debbc2227054d67078c6442f1ab1811192 (diff)
downloadxserver-3689be96ac125c9bfca9d37de4878f05f4e2f584.tar.gz
vfb: Don't reimplement micmap so much
We know we're atop fb which is atop micmap, the only thing we need to hook is InstallColormap to handle the xwd colormap change. Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
Diffstat (limited to 'hw/vfb')
-rw-r--r--hw/vfb/InitOutput.c55
1 files changed, 3 insertions, 52 deletions
diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
index 9c4926462..bcaaa85e4 100644
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -380,26 +380,10 @@ ddxProcessArgument(int argc, char *argv[], int i)
return 0;
}
-static DevPrivateKeyRec cmapScrPrivateKeyRec;
-
-#define cmapScrPrivateKey (&cmapScrPrivateKeyRec)
-
-#define GetInstalledColormap(s) ((ColormapPtr) dixLookupPrivate(&(s)->devPrivates, cmapScrPrivateKey))
-#define SetInstalledColormap(s,c) (dixSetPrivate(&(s)->devPrivates, cmapScrPrivateKey, c))
-
-static int
-vfbListInstalledColormaps(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;
-}
-
static void
vfbInstallColormap(ColormapPtr pmap)
{
- ColormapPtr oldpmap = GetInstalledColormap(pmap->pScreen);
+ ColormapPtr oldpmap = GetInstalledmiColormap(pmap->pScreen);
if (pmap != oldpmap) {
int entries;
@@ -410,11 +394,7 @@ vfbInstallColormap(ColormapPtr pmap)
xColorItem *defs;
int i;
- if (oldpmap != (ColormapPtr) None)
- WalkTree(pmap->pScreen, TellLostMap, (char *) &oldpmap->mid);
- /* Install pmap */
- SetInstalledColormap(pmap->pScreen, pmap);
- WalkTree(pmap->pScreen, TellGainedMap, (char *) &pmap->mid);
+ miInstallColormap(pmap);
entries = pmap->pVisual->ColormapEntries;
pXWDHeader = vfbScreens[pmap->pScreen->myNum].pXWDHeader;
@@ -452,28 +432,12 @@ vfbInstallColormap(ColormapPtr pmap)
}
static void
-vfbUninstallColormap(ColormapPtr pmap)
-{
- ColormapPtr curpmap = GetInstalledColormap(pmap->pScreen);
-
- if (pmap == curpmap) {
- if (pmap->mid != pmap->pScreen->defColormap) {
- dixLookupResourceByType((void **) &curpmap,
- pmap->pScreen->defColormap,
- RT_COLORMAP, serverClient,
- DixInstallAccess);
- (*pmap->pScreen->InstallColormap) (curpmap);
- }
- }
-}
-
-static void
vfbStoreColors(ColormapPtr pmap, int ndef, xColorItem * pdefs)
{
XWDColor *pXWDCmap;
int i;
- if (pmap != GetInstalledColormap(pmap->pScreen)) {
+ if (pmap != GetInstalledmiColormap(pmap->pScreen)) {
return;
}
@@ -761,18 +725,10 @@ static Bool
vfbCloseScreen(ScreenPtr pScreen)
{
vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
- int i;
pScreen->CloseScreen = pvfb->closeScreen;
/*
- * XXX probably lots of stuff to clean. For now,
- * clear installed colormaps so that server reset works correctly.
- */
- for (i = 0; i < screenInfo.numScreens; i++)
- SetInstalledColormap(screenInfo.screens[i], NULL);
-
- /*
* fb overwrites miCloseScreen, so do this here
*/
if (pScreen->devPrivate)
@@ -790,9 +746,6 @@ vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
int ret;
char *pbits;
- if (!dixRegisterPrivateKey(&cmapScrPrivateKeyRec, PRIVATE_SCREEN, 0))
- return FALSE;
-
if (dpix == 0)
dpix = 100;
@@ -859,8 +812,6 @@ vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
return FALSE;
pScreen->InstallColormap = vfbInstallColormap;
- pScreen->UninstallColormap = vfbUninstallColormap;
- pScreen->ListInstalledColormaps = vfbListInstalledColormaps;
pScreen->SaveScreen = vfbSaveScreen;
pScreen->StoreColors = vfbStoreColors;