static Visual *GetSpecifiedVisual( Disp_Obj * dop, int depth ) { XVisualInfo * vip; int visualsMatched; int i; const char * name; vip = get_depth_list(dop,depth,&visualsMatched); if( visualsMatched == 0 ) return(NULL); /* We need something more here, for openGL we have multiple visuals w/ 24 bit truecolor, * but not all have a Z buffer... * As a hack, we pass the desired visualID through the environment... */ { char *s; s=getenv("PREFERRED_VISUAL_ID"); if( s != NULL ){ int preferred_id; sprintf(DEFAULT_ERROR_STRING,"Checking for PREFERRED_VISUAL_ID %s",s); NADVISE(DEFAULT_ERROR_STRING); preferred_id = atoi(s); /* BUG decimal only, should parse hex too */ i=find_visual_by_id(vip,visualsMatched,preferred_id); if( i >= 0 ){ sprintf(DEFAULT_ERROR_STRING,"preferred visual id %d FOUND at index %d",preferred_id,i); NADVISE(DEFAULT_ERROR_STRING); return(vip[i].visual); } sprintf(DEFAULT_ERROR_STRING,"Unable to find requested visual id %d",preferred_id); NWARN(DEFAULT_ERROR_STRING); } } i=find_visual(vip,visualsMatched,PREFERRED_MODE,depth); if( i < 0 ){ sprintf(DEFAULT_ERROR_STRING,"no %s visual found with depth %d!?", PREFERRED_NAME,depth); NWARN(DEFAULT_ERROR_STRING); i=find_visual(vip,visualsMatched,ALTERNATE_MODE,depth); if( i < 0 ){ sprintf(DEFAULT_ERROR_STRING,"no %s visual found with depth %d!?", ALTERNATE_NAME,depth); NWARN(DEFAULT_ERROR_STRING); return(vip[0].visual); } else { name = ALTERNATE_NAME; } } else { name = PREFERRED_NAME; } if( verbose ){ sprintf(DEFAULT_ERROR_STRING,"i=%d, using visual %ld (%s, depth = %d)", i, vip[i].visualid,name,depth); NADVISE(DEFAULT_ERROR_STRING); } return(vip[i].visual); }
static Visual *GetEightBitVisual( Disp_Obj * dop) { int visualsMatched=0; Visual *vis; XVisualInfo *vip; int i; vip = get_depth_list(dop,8,&visualsMatched); if( visualsMatched == 0 ) return(NULL); i=find_visual(vip,visualsMatched,PseudoColor,8); if( i < 0 ){ NWARN("no pseudocolor visual found!?"); return(vip[0].visual); } #ifdef QUIP_DEBUG if( debug & xdebug ){ sprintf(DEFAULT_ERROR_STRING,"using visual %ld",vip[i].visualid); NADVISE(DEFAULT_ERROR_STRING); vis=DefaultVisual(dop->do_dpy,dop->do_screen); sprintf(DEFAULT_ERROR_STRING,"default visual is %ld",vis->visualid); NADVISE(DEFAULT_ERROR_STRING); } #endif /* QUIP_DEBUG */ return(vip[i].visual); }
XVisualInfo * i4_x11_opengl_display_class::visual() { if (!the_visual) { the_visual = find_visual(); } return the_visual; }