1 This patch fixes problems with picking a good visual on certain 24-bit Sun
5 *** ../xv-3.10a/xv.c Thu Jan 19 13:08:43 1995
6 --- xv.c Mon Mar 06 17:59:59 1995
13 /* if we *haven't* had a non-default visual specified,
14 see if we have a TrueColor or DirectColor visual of 24 or 32 bits,
15 and if so, use that as the default visual (prefer TrueColor) */
17 if (!visualstr && !useroot) {
18 XVisualInfo *vinfo, rvinfo;
23 rvinfo.class = TrueColor;
24 rvinfo.screen = theScreen;
25 ! flags = VisualClassMask | VisualScreenMask;
27 vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
28 ! if (vinfo) { /* look for a TrueColor, 24-bit or more (pref 24) */
29 ! for (i=0, best = -1; i<numvis; i++) {
30 if (vinfo[i].depth == 24) best = i;
31 - else if (vinfo[i].depth>24 && best<0) best = i;
35 if (best == -1) { /* look for a DirectColor, 24-bit or more (pref 24) */
36 rvinfo.class = DirectColor;
37 if (vinfo) XFree((char *) vinfo);
38 vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
40 ! for (i=0, best = -1; i<numvis; i++) {
41 if (vinfo[i].depth == 24) best = i;
42 - else if (vinfo[i].depth>24 && best<0) best = i;
51 /* if we *haven't* had a non-default visual specified,
52 see if we have a TrueColor or DirectColor visual of 24 or 32 bits,
53 and if so, use that as the default visual (prefer TrueColor) */
55 if (!visualstr && !useroot) {
57 XVisualInfo *vinfo, rvinfo;
62 rvinfo.class = TrueColor;
63 rvinfo.screen = theScreen;
64 ! flags = VisualClassMask | VisualScreenMask;
65 ! defvid = XVisualIDFromVisual(DefaultVisual(theDisp,
66 ! DefaultScreen(theDisp)));
68 vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
70 ! /* Check list, use 'default', first 24-bit, or first >24-bit */
71 ! for (i=0; i<numvis && best==-1; i++) { /* default? */
72 ! if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
74 ! for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */
75 if (vinfo[i].depth == 24) best = i;
77 + for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */
78 + if (vinfo[i].depth >= 24) best = i;
82 if (best == -1) { /* look for a DirectColor, 24-bit or more (pref 24) */
83 rvinfo.class = DirectColor;
84 if (vinfo) XFree((char *) vinfo);
86 vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis);
88 ! for (i=0; i<numvis && best==-1; i++) { /* default? */
89 ! if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i;
91 ! for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */
92 if (vinfo[i].depth == 24) best = i;
94 + for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */
95 + if (vinfo[i].depth >= 24) best = i;
102 if (best>=0 && best<numvis) useOtherVisual(vinfo, best);
103 if (vinfo) XFree((char *) vinfo);
108 if (visualstr && useroot) {
109 fprintf(stderr, "%s: %sUsing default visual.\n",
111 if (best>=0 && best<numvis) useOtherVisual(vinfo, best);
112 if (vinfo) XFree((char *) vinfo);
117 if (visualstr && useroot) {
118 fprintf(stderr, "%s: %sUsing default visual.\n",