--- ray/src/rt/rview.c 2008/08/22 17:39:26 2.30 +++ ray/src/rt/rview.c 2013/10/18 17:04:13 2.37 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rview.c,v 2.30 2008/08/22 17:39:26 greg Exp $"; +static const char RCSid[] = "$Id: rview.c,v 2.37 2013/10/18 17:04:13 greg Exp $"; #endif /* * rview.c - routines and variables for interactive view generation. @@ -19,6 +19,18 @@ static const char RCSid[] = "$Id: rview.c,v 2.30 2008/ void +quit(code) /* quit program */ +int code; +{ + if (ray_pnprocs > 0) /* close children if any */ + ray_pclose(0); + if (!ray_pnprocs) /* in parent */ + devclose(); + exit(code); +} + + +void devopen( /* open device driver */ char *dname ) @@ -177,16 +189,7 @@ again: break; case 'm': /* move camera (or memstats) */ if (badcom("move")) -#ifdef MSTATS - { - if (badcom("memory")) - goto commerr; - printmemstats(stderr); - break; - } -#else goto commerr; -#endif getmove(args); break; case 'r': /* rotate/repaint */ @@ -210,6 +213,11 @@ again: } getpivot(args); break; + case 'o': /* origin view */ + if (badcom("origin")) + goto commerr; + getorigin(args); + break; case CTRL('R'): /* redraw */ redraw(); break; @@ -246,6 +254,8 @@ commerr: error(COMMAND, errmsg); break; } + if (newparam && ray_pnprocs) /* drop into immediate mode */ + ray_pclose(0); #undef badcom } @@ -280,7 +290,7 @@ rsample(void) /* sample the image */ /* sample the image */ for (y = 0; /* y < ysiz */ ; y++) { for (x = 0; x < xsiz-1; x++) { - if (dev->inpready || errno == ENOMEM) + if (dev->inpready) goto escape; /* * Test super-pixel to the right. @@ -294,7 +304,7 @@ rsample(void) /* sample the image */ if (y >= ysiz-1) break; for (x = 0; x < xsiz; x++) { - if (dev->inpready || errno == ENOMEM) + if (dev->inpready) goto escape; /* * Find super-pixel at this position in next row. @@ -328,7 +338,6 @@ refine( /* refine a node */ { int growth; int mx, my; - int i; if (dev->inpready) /* quit for input */ return(0); @@ -396,13 +405,6 @@ refine( /* refine a node */ growth += refine(p->kid+DR, pd-1); if (my < pframe.u) growth += refine(p->kid+UR, pd-1); - } - /* recompute sum */ - if (growth) { - setcolor(p->v, 0.0, 0.0, 0.0); - for (i = 0; i < 4; i++) - addcolor(p->v, p->kid[i].v); - scalecolor(p->v, 0.25); } return(growth); }