]> git.pld-linux.org Git - packages/xv.git/blob - xv-vispatch
- added jasper patch (don't use internal functions or hacks)
[packages/xv.git] / xv-vispatch
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",
This page took 0.066509 seconds and 3 git commands to generate.