1 /*
2 visual.c
3
4 Bill Kendrick & Mike Hufnagel
5 Last modified: 11/18/95 (clean up)
6 */
7
8 #include <X11/Xlib.h>
9 #include <X11/Xutil.h>
10 #include "visual.h"
11
SetUpVisual(Display * display,int screen,Visual ** visual,int * depth)12 int SetUpVisual(Display *display, int screen, Visual **visual, int *depth)
13 {
14 int number_visuals;
15 XVisualInfo *visual_array;
16 XVisualInfo visual_info_template;
17 int status;
18
19 status = False;
20
21 /* Will the default visual work? */
22 if (DefaultVisual(display,screen)->class == PseudoColor ||
23 DefaultVisual(display,screen)->class == TrueColor)
24 {
25 *visual = DefaultVisual(display,screen);
26 *depth = DefaultDepth(display,screen);
27 status = True;
28 }
29 else
30 {
31 /* we look for a PseudoColor visual on the current screen */
32 visual_info_template.class = PseudoColor;
33 visual_info_template.screen = screen;
34 visual_array = XGetVisualInfo(display,VisualClassMask | VisualScreenMask,
35 &visual_info_template,&number_visuals);
36
37 /* Did we find one? */
38 if ((number_visuals>0) && (visual_array != NULL))
39 {
40 /* Choose the first PseudoColor visual (LAZY!) */
41 *visual = visual_array[0].visual;
42 *depth = visual_array[0].depth;
43 XFree(visual_array); /* done with this chunk of RAM */
44 status = True;
45 }
46 else
47 {
48 *visual = CopyFromParent;
49 status = False; /* sorry - live with what's left */
50 }
51 }
52
53 return(status);
54 }
55