--- ray/src/px/x11image.c 1990/03/07 11:39:26 1.5 +++ ray/src/px/x11image.c 1990/08/30 11:21:34 1.7 @@ -308,7 +308,9 @@ getras() /* get raster file */ if (ourras == NULL) goto fail; getmono(); - } else if (XMatchVisualInfo(thedisplay,ourscreen,24,TrueColor,&vinfo)) { + } else if (XMatchVisualInfo(thedisplay,ourscreen,24,TrueColor,&vinfo) + /* kludge for DirectColor */ + || XMatchVisualInfo(thedisplay,ourscreen,24,DirectColor,&vinfo)) { ourdata = (unsigned char *)malloc(xmax*ymax*3); if (ourdata == NULL) goto fail; @@ -601,20 +603,20 @@ getmono() /* get monochrome data */ register unsigned char *dp; register int x, err; int y; - rgbpixel *inline; + rgbpixel *inl; short *cerr; - if ((inline = (rgbpixel *)malloc(xmax*sizeof(rgbpixel))) == NULL + if ((inl = (rgbpixel *)malloc(xmax*sizeof(rgbpixel))) == NULL || (cerr = (short *)calloc(xmax,sizeof(short))) == NULL) quit("out of memory in getmono"); dp = ourdata - 1; for (y = 0; y < ymax; y++) { - picreadline3(y, inline); + picreadline3(y, inl); err = 0; for (x = 0; x < xmax; x++) { if (!(x&7)) *++dp = 0; - err += rgb_bright(&inline[x]) + cerr[x]; + err += rgb_bright(&inl[x]) + cerr[x]; if (err > 127) err -= 255; else @@ -622,7 +624,7 @@ getmono() /* get monochrome data */ cerr[x] = err >>= 1; } } - free((char *)inline); + free((char *)inl); free((char *)cerr); }