Annotation of researchv9/X11/src/X.V11R1/server/ddx/mfb/mfbcmap.c, revision 1.1.1.1

1.1       root        1: /***********************************************************
                      2: Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
                      3: and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
                      4: 
                      5:                         All Rights Reserved
                      6: 
                      7: Permission to use, copy, modify, and distribute this software and its 
                      8: documentation for any purpose and without fee is hereby granted, 
                      9: provided that the above copyright notice appear in all copies and that
                     10: both that copyright notice and this permission notice appear in 
                     11: supporting documentation, and that the names of Digital or MIT not be
                     12: used in advertising or publicity pertaining to distribution of the
                     13: software without specific, written prior permission.  
                     14: 
                     15: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     16: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     17: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     18: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     19: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     20: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     21: SOFTWARE.
                     22: 
                     23: ******************************************************************/
                     24: /* $Header: mfbcmap.c,v 1.13 87/09/04 14:19:49 toddb Exp $ */
                     25: #include "X.h"
                     26: #include "scrnintstr.h"
                     27: #include "colormapst.h"
                     28: #include "resource.h"
                     29: 
                     30: extern int     TellLostMap(), TellGainedMap();
                     31: /* A monochrome frame buffer is a static gray colormap with two entries.
                     32:  * We have a "required list" of length 1.  Because we can only support 1
                     33:  * colormap, we never have to change it, but we may have to change the 
                     34:  * name we call it.  If someone installs a new colormap, we know it must
                     35:  * look just like the old one (because we've checked in dispatch that it was
                     36:  * a valid colormap identifier, and all the colormap IDs for this device
                     37:  * look the same).  Nevertheless, we still have to uninstall the old colormap
                     38:  * and install the new one.  Similarly, if someone uninstalls a colormap,
                     39:  * we have to install the default map, even though we know those two looked
                     40:  * alike.  
                     41:  * The required list concept is pretty much irrelevant when you can only
                     42:  * have one map installed at a time.  
                     43:  */
                     44: static ColormapPtr pInstalledMap = (ColormapPtr) None;
                     45: int
                     46: mfbListInstalledColormaps(pScreen, pmaps)
                     47:     ScreenPtr  pScreen;
                     48:     Colormap   *pmaps;
                     49: {
                     50:     /* By the time we are processing requests, we can guarantee that there
                     51:      * is always a colormap installed */
                     52:     *pmaps = pInstalledMap->mid;
                     53:     return (1);
                     54: }
                     55: 
                     56: 
                     57: void
                     58: mfbInstallColormap(pmap)
                     59:     ColormapPtr        pmap;
                     60: {
                     61:     if(pmap != pInstalledMap)
                     62:     {
                     63:        /* Uninstall pInstalledMap. No hardware changes required, just
                     64:         * notify all interested parties. */
                     65:        if(pInstalledMap != (ColormapPtr)None)
                     66:            WalkTree(pmap->pScreen, TellLostMap, &pInstalledMap->mid);
                     67:        /* Install pmap */
                     68:        pInstalledMap = pmap;
                     69:        WalkTree(pmap->pScreen, TellGainedMap, &pmap->mid);
                     70: 
                     71:     }
                     72: }
                     73: void
                     74: mfbUninstallColormap(pmap)
                     75:     ColormapPtr        pmap;
                     76: {
                     77:     if(pmap == pInstalledMap)
                     78:     {
                     79:         /* Uninstall pmap */
                     80:        WalkTree(pmap->pScreen, TellLostMap, &pmap->mid);
                     81:        /* Install default map */
                     82:        pInstalledMap = (ColormapPtr) LookupID(pmap->pScreen->defColormap,
                     83:                                               RT_COLORMAP, RC_CORE);
                     84:        WalkTree(pmap->pScreen, TellGainedMap, &pInstalledMap->mid);
                     85:     }
                     86:        
                     87: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.