Ejemplo n.º 1
0
Archivo: main.c Proyecto: kuailexs/jwm
/** Open a connection to the X server. */
void OpenConnection(void)
{

   display = JXOpenDisplay(displayString);
   if(JUNLIKELY(!display)) {
      if(displayString) {
         printf("error: could not open display %s\n", displayString);
      } else {
         printf("error: could not open display\n");
      }
      DoExit(1);
   }

   rootScreen = DefaultScreen(display);
   rootWindow = RootWindow(display, rootScreen);
   rootWidth = DisplayWidth(display, rootScreen);
   rootHeight = DisplayHeight(display, rootScreen);
   rootDepth = DefaultDepth(display, rootScreen);
   rootVisual = DefaultVisual(display, rootScreen);
   rootColormap = DefaultColormap(display, rootScreen);
   rootGC = DefaultGC(display, rootScreen);
   colormapCount = MaxCmapsOfScreen(ScreenOfDisplay(display, rootScreen));

   XSetGraphicsExposures(display, rootGC, False);


}
Ejemplo n.º 2
0
void
__glutSetupColormap(XVisualInfo * vi, GLUTcolormap ** colormap, Colormap * cmap, int isRGB)
{
#if defined(WIN32)
  if (vi->dwFlags & PFD_NEED_PALETTE || vi->iPixelType==PFD_TYPE_COLORINDEX) {
    *colormap = __glutAssociateColormap(vi);
    *cmap = (*colormap)->cmap;
  } else {
    *colormap = NULL;
    *cmap = 0;
  }
#else
  Status status;
  XStandardColormap *standardCmaps;
  int i, numCmaps;
  static Atom hpColorRecoveryAtom = -1;

  switch (vi->class) {
  case PseudoColor:
    if (isRGB) {
      /* Mesa might return a PseudoColor visual for RGB mode. */
      *colormap = NULL;
      if (MaxCmapsOfScreen(DefaultScreenOfDisplay(__glutDisplay)) == 1
        && vi->visual == DefaultVisual(__glutDisplay, __glutScreen)) {
        char *private = getenv("MESA_PRIVATE_CMAP");

        if (private) {
          /* User doesn't want to share colormaps. */
          *cmap = XCreateColormap(__glutDisplay, __glutRoot,
            vi->visual, AllocNone);
        } else {
          /* Share the root colormap. */
          *cmap = DefaultColormap(__glutDisplay, __glutScreen);
        }
      } else {
Ejemplo n.º 3
0
/*
 * Allocate a "nice" colormap.  This could be better (HP-CR support, etc).
 */
static Colormap alloc_colormap(Display *dpy, Window parent, Visual *vis)
{
   Screen *scr = DefaultScreenOfDisplay(dpy);
   int scrnum = DefaultScreen(dpy);

   if (MaxCmapsOfScreen(scr)==1 && vis==DefaultVisual(dpy, scrnum)) {
      /* The window and root are of the same visual type so */
      /* share the root colormap. */
      return DefaultColormap(dpy, scrnum);
   }
   else {
      return XCreateColormap(dpy, parent, vis, AllocNone);
   }
}
Ejemplo n.º 4
0
static Colormap getColormap(Display * dsp, XVisualInfo * vi,
			    WINTYPE Req_Win_Type)
{
    Status status;
    XStandardColormap *standardCmaps;
    int i, numCmaps;

    switch (vi->class) {
    case PseudoColor:

	if (Req_Win_Type >= 4) {

	    if (MaxCmapsOfScreen(DefaultScreenOfDisplay(dsp)) == 1
		&& vi->visual == DefaultVisual(dsp, vi->screen)) {

		/*
		 * Share the root colormap. 
		 */
		return (DefaultColormap(dsp, vi->screen));

	    } else {
		/*
		 * Get our own PseudoColor colormap. 
		 */
		return (XCreateColormap(dsp, RootWindow(dsp, vi->screen),
					vi->visual, AllocNone));
	    }

	} else {
	    /*
	     * CI mode, real GLX never returns a PseudoColor visual
	     * for RGB mode. 
	     */
	    return (XCreateColormap(dsp, RootWindow(dsp, vi->screen),
				    vi->visual, AllocAll));
	}
	break;

    case TrueColor:
    case DirectColor:

	status = XmuLookupStandardColormap(dsp,
					   vi->screen, vi->visualid,
					   vi->depth, XA_RGB_DEFAULT_MAP,
					   /*
					    * replace 
					    */ False, /* retain */ True);
	if (status == 1) {
	    status = XGetRGBColormaps(dsp, RootWindow(dsp, vi->screen),
				      &standardCmaps, &numCmaps,
				      XA_RGB_DEFAULT_MAP);
	    if (status == 1)
		for (i = 0; i < numCmaps; i++)
		    if (standardCmaps[i].visualid == vi->visualid) {
			Colormap cmap;

			cmap = standardCmaps[i].colormap;
			XFree(standardCmaps);
			return (cmap);
		    }
	}
	/*
	 * If no standard colormap but TrueColor, just make a
	 * private one. 
	 */
	return (XCreateColormap(dsp, RootWindow(dsp, vi->screen),
				vi->visual, AllocNone));
	break;

    case StaticColor:
    case StaticGray:
    case GrayScale:
	/*
	 * Mesa supports these visuals 
	 */
	return (XCreateColormap(dsp, RootWindow(dsp, vi->screen),
				vi->visual, AllocNone));
	break;

    default:
	fprintf(stderr,
		"could not allocate colormap for visual type: %d.",
		vi->class);
	exit(-1);
    }

    return ((Colormap)NULL);

}
Ejemplo n.º 5
0
int XMaxCmapsOfScreen(Screen *s) { return (MaxCmapsOfScreen(s)); }