| 35 |
|
if (!XMatchVisualInfo(disp,scrn,8,PseudoColor,&ourvinfo)) |
| 36 |
|
return(NULL); |
| 37 |
|
} else if (depth == 24) { |
| 38 |
< |
if (!XMatchVisualInfo(disp,scrn,24,TrueColor,&ourvinfo)) |
| 38 |
> |
if (!XMatchVisualInfo(disp,scrn,24,TrueColor,&ourvinfo) && |
| 39 |
> |
!XMatchVisualInfo(disp,scrn,24,DirectColor,&ourvinfo)) |
| 40 |
|
return(NULL); |
| 41 |
|
} else |
| 42 |
|
return(NULL); |
| 48 |
|
xr->image = XCreateImage(disp,ourvinfo.visual,depth, |
| 49 |
|
depth==1 ? XYBitmap : ZPixmap, |
| 50 |
|
0,data,width,height,bm_pad,0); |
| 51 |
< |
xr->image->bitmap_bit_order = MSBFirst; |
| 51 |
> |
if (depth == 1) { |
| 52 |
> |
xr->image->bitmap_bit_order = MSBFirst; |
| 53 |
> |
xr->image->byte_order = MSBFirst; |
| 54 |
> |
} else |
| 55 |
> |
xr->image->byte_order = LSBFirst; |
| 56 |
> |
if (xr->image->bits_per_pixel == 32) { |
| 57 |
> |
xr->image->bytes_per_line = xr->image->bytes_per_line*24/32; |
| 58 |
> |
xr->image->bits_per_pixel = 24; |
| 59 |
> |
} |
| 60 |
|
xr->gc = XCreateGC(disp, RootWindow(disp,scrn), 0, 0); |
| 61 |
|
XSetState(disp, xr->gc, BlackPixel(disp,scrn), WhitePixel(disp,scrn), |
| 62 |
|
GXcopy, AllPlanes); |