diff options
author | Adam Jackson <ajax@redhat.com> | 2014-06-10 12:54:41 -0400 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2014-10-08 10:10:39 +0200 |
commit | 3689be96ac125c9bfca9d37de4878f05f4e2f584 (patch) | |
tree | 4629fcbb51b16f1abed1fef30dc414413e42d4f5 /hw/vfb | |
parent | 692676debbc2227054d67078c6442f1ab1811192 (diff) |
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.c | 55 |
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; |