ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rholo2l.c
(Generate patch)

Comparing ray/src/hd/rholo2l.c (file contents):
Revision 3.1 by gregl, Fri Oct 31 10:23:29 1997 UTC vs.
Revision 3.7 by gregl, Tue Dec 2 16:35:45 1997 UTC

# Line 10 | Line 10 | static char SCCSid[] = "$SunId$ SGI";
10  
11   #include "rholo.h"
12   #include "random.h"
13 + #include "paths.h"
14 + #include "selcall.h"
15   #include <signal.h>
16   #include <sys/time.h>
17  
# Line 17 | Line 19 | static char SCCSid[] = "$SunId$ SGI";
19   #define MAXPROC         16
20   #endif
21  
22 < static char     PFILE[] = "/usr/tmp/RHpersist"; /* persist file name */
22 > static char     pfile[] = TEMPLATE;             /* persist file name */
23  
24   static int      rtpd[MAXPROC][3];               /* process descriptors */
25   static float    *rtbuf = NULL;                  /* allocated i/o buffer */
# Line 53 | Line 55 | start_rtrace()                 /* start rtrace process */
55          rtargv[rtargc++] = "-x"; rtargv[rtargc++] = buf1;
56          rtargv[rtargc++] = "-y"; rtargv[rtargc++] = "0";
57          rtargv[rtargc++] = "-fff";
58 <        rtargv[rtargc++] = "-ovl";
59 <        rtargv[rtargc++] = nowarn ? "-w-" : "-w+";
58 >        rtargv[rtargc++] = vbool(VDIST) ? "-ovl" : "-ovL";
59 >        if (nowarn)
60 >                rtargv[rtargc++] = "-w-";
61          if (npt > 1) {
62 <                rtargv[rtargc++] = "-PP"; rtargv[rtargc++] = PFILE;
62 >                mktemp(pfile);
63 >                rtargv[rtargc++] = "-PP"; rtargv[rtargc++] = pfile;
64          }
65          rtargv[rtargc++] = vval(OCTREE);
66          rtargv[rtargc] = NULL;
# Line 207 | Line 211 | int    poll;
211                  if (n)                                  /* read past end? */
212                          error(INTERNAL, "packet sync error in get_packets");
213                                                          /* take from queue */
214 <                if (pldone = NULL)
214 >                if (pldone == NULL)
215                          pldone = plend = pqueue[pn];
216                  else
217                          plend->next = pqueue[pn];
# Line 218 | Line 222 | int    poll;
222          }
223          return(pldone);                         /* return finished packets */
224   eoferr:
225 <        error(USER, "unexpected EOF from rtrace process");
225 >        error(USER, "rtrace process died");
226   }
227  
228  
# Line 252 | Line 256 | flush_queue()                  /* empty all rtrace queues */
256                  if (pqlen[i]) {
257                          if (rpdone == NULL) {           /* tack on queue */
258                                  rpdone = rpl = pqueue[i];
259 <                                n = rpl->nr;
259 >                                if ((nr = rpl->nr) < RPACKSIZ) nr++;
260                          } else {
261                                  rpl->next = pqueue[i];
262 <                                n = 0;
262 >                                nr = 0;
263                          }
264 <                        while (rpl->next != NULL)
265 <                                n += (rpl = rpl->next)->nr;
264 >                        while (rpl->next != NULL) {
265 >                                nr += (rpl = rpl->next)->nr;
266 >                                if (rpl->nr < RPACKSIZ)
267 >                                        nr++;           /* add flush block */
268 >                        }
269                          n = readbuf(rtpd[i][0], (char *)rtbuf,
270 <                                        4*sizeof(float)*n);
270 >                                        4*sizeof(float)*nr);
271                          if (n < 0)
272                                  error(SYSTEM, "read failure in flush_queue");
273                          bp = rtbuf;                     /* process packets */
# Line 287 | Line 294 | killpersist()                  /* kill persistent process */
294          FILE    *fp;
295          int     pid;
296  
297 <        if ((fp = fopen(PFILE, "r")) == NULL)
297 >        if ((fp = fopen(pfile, "r")) == NULL)
298                  return;
299          if (fscanf(fp, "%*s %d", &pid) != 1 || kill(pid, SIGALRM) < 0)
300 <                unlink(PFILE);
300 >                unlink(pfile);
301          fclose(fp);
302   }
303  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines