--- ray/src/hd/rhd_glx.c 2003/02/22 02:07:24 3.29 +++ ray/src/hd/rhd_glx.c 2003/09/19 18:33:04 3.31 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rhd_glx.c,v 3.29 2003/02/22 02:07:24 greg Exp $"; +static const char RCSid[] = "$Id: rhd_glx.c,v 3.31 2003/09/19 18:33:04 greg Exp $"; #endif /* * OpenGL GLX driver for holodeck display. @@ -223,7 +223,7 @@ char *id; setstereobuf(STEREO_BUFFER_LEFT); #endif checkglerr("setting rendering parameters"); - copystruct(&odev.v, &stdview); + odev.v = stdview; odev.v.type = VT_PER; /* map the window */ XMapWindow(ourdisplay, gwind); @@ -306,10 +306,10 @@ register VIEW *nv; XResizeWindow(ourdisplay, gwind, odev.hres, odev.vres); dev_input(); /* get resize event */ } - copystruct(&odev.v, nv); /* setview() already called */ + odev.v = *nv; /* setview() already called */ } #ifdef STEREO - copystruct(&vwright, nv); + vwright = *nv; d = eyesepdist / sqrt(nv->hn2); VSUM(vwright.vp, nv->vp, nv->hvec, d); /* setview(&vwright); -- Unnecessary */ @@ -543,6 +543,8 @@ FVECT direc; if (dx<0 | dx>=odev.hres | dy<0 | dy>=odev.vres) return(FHUGE); glReadPixels(dx,dy, 1,1, GL_DEPTH_COMPONENT,GL_FLOAT, &gldepth); + if (gldepth <= FTINY) + return (FHUGE); /* call failed */ dist = mapdepth(gldepth); if (dist >= .99*FHUGE) return(FHUGE); @@ -559,7 +561,7 @@ int dx, dy, mov, orb; double d,d1; register int li; /* start with old view */ - copystruct(&nv, &odev.v); + nv = odev.v; /* orient our motion */ if (viewray(v1, odir, &odev.v, (dx+.5)/odev.hres, (dy+.5)/odev.vres) < -FTINY)