]>
Commit | Line | Data |
---|---|---|
c1f0ee65 JR |
1 | This patch fixes problems with picking a good visual on certain 24-bit Sun |
2 | systems. | |
3 | ||
4 | ||
5 | *** ../xv-3.10a/xv.c Thu Jan 19 13:08:43 1995 | |
6 | --- xv.c Mon Mar 06 17:59:59 1995 | |
7 | *************** | |
8 | *** 326,363 **** | |
9 | */ | |
10 | ||
11 | ||
12 | - | |
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) */ | |
16 | ||
17 | if (!visualstr && !useroot) { | |
18 | XVisualInfo *vinfo, rvinfo; | |
19 | int best, numvis; | |
20 | long flags; | |
21 | ||
22 | ! best = -1; | |
23 | rvinfo.class = TrueColor; | |
24 | rvinfo.screen = theScreen; | |
25 | ! flags = VisualClassMask | VisualScreenMask; | |
26 | ||
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; | |
32 | } | |
33 | } | |
34 | ! | |
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); | |
39 | if (vinfo) { | |
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; | |
43 | } | |
44 | } | |
45 | } | |
46 | ||
47 | --- 326,377 ---- | |
48 | */ | |
49 | ||
50 | ||
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) */ | |
54 | ||
55 | if (!visualstr && !useroot) { | |
56 | + VisualID defvid; | |
57 | XVisualInfo *vinfo, rvinfo; | |
58 | int best, numvis; | |
59 | long flags; | |
60 | ||
61 | ! best = -1; | |
62 | rvinfo.class = TrueColor; | |
63 | rvinfo.screen = theScreen; | |
64 | ! flags = VisualClassMask | VisualScreenMask; | |
65 | ! defvid = XVisualIDFromVisual(DefaultVisual(theDisp, | |
66 | ! DefaultScreen(theDisp))); | |
67 | ||
68 | vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis); | |
69 | ! if (vinfo) { | |
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; | |
73 | ! } | |
74 | ! for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */ | |
75 | if (vinfo[i].depth == 24) best = i; | |
76 | } | |
77 | + for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */ | |
78 | + if (vinfo[i].depth >= 24) best = i; | |
79 | + } | |
80 | } | |
81 | ! | |
82 | if (best == -1) { /* look for a DirectColor, 24-bit or more (pref 24) */ | |
83 | rvinfo.class = DirectColor; | |
84 | if (vinfo) XFree((char *) vinfo); | |
85 | + | |
86 | vinfo = XGetVisualInfo(theDisp, flags, &rvinfo, &numvis); | |
87 | if (vinfo) { | |
88 | ! for (i=0; i<numvis && best==-1; i++) { /* default? */ | |
89 | ! if ((vinfo[i].visualid == defvid) && (vinfo[i].depth >= 24)) best=i; | |
90 | ! } | |
91 | ! for (i=0; i<numvis && best==-1; i++) { /* 24-bit ? */ | |
92 | if (vinfo[i].depth == 24) best = i; | |
93 | } | |
94 | + for (i=0; i<numvis && best==-1; i++) { /* >24-bit ? */ | |
95 | + if (vinfo[i].depth >= 24) best = i; | |
96 | + } | |
97 | } | |
98 | } | |
99 | ||
100 | *************** | |
101 | *** 364,371 **** | |
102 | if (best>=0 && best<numvis) useOtherVisual(vinfo, best); | |
103 | if (vinfo) XFree((char *) vinfo); | |
104 | } | |
105 | ! | |
106 | ! | |
107 | ||
108 | if (visualstr && useroot) { | |
109 | fprintf(stderr, "%s: %sUsing default visual.\n", | |
110 | --- 378,385 ---- | |
111 | if (best>=0 && best<numvis) useOtherVisual(vinfo, best); | |
112 | if (vinfo) XFree((char *) vinfo); | |
113 | } | |
114 | ! | |
115 | ! | |
116 | ||
117 | if (visualstr && useroot) { | |
118 | fprintf(stderr, "%s: %sUsing default visual.\n", |