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

Comparing ray/src/rt/rayfifo.c (file contents):
Revision 2.4 by greg, Sun Dec 13 19:13:04 2009 UTC vs.
Revision 2.5 by greg, Thu Apr 26 18:09:55 2018 UTC

# Line 36 | Line 36 | static const char RCSid[] = "$Id$";
36   #include  "ray.h"
37   #include  <string.h>
38  
39 + #ifndef MAXFIFO
40 + #define MAXFIFO         4096                    /* clear FIFO past this */
41 + #endif
42 +
43   int             (*ray_fifo_out)(RAY *r) = NULL; /* ray output callback */
44  
45   static RAY      *r_fifo_buf = NULL;             /* circular FIFO out buffer */
# Line 55 | Line 59 | ray_fifo_growbuf(void) /* double buffer size (or set t
59          int     i;
60  
61          if (r_fifo_buf == NULL)
62 <                r_fifo_len = 1<<5;
62 >                r_fifo_len = 32;
63          else
64 <                r_fifo_len <<= 1;
64 >                r_fifo_len = r_fifo_len*3/2;
65                                                  /* allocate new */
66          r_fifo_buf = (RAY *)calloc(r_fifo_len, sizeof(RAY));
67          if (r_fifo_buf == NULL)
# Line 120 | Line 124 | ray_fifo_in(           /* add ray to FIFO */
124          if (incall++)
125                  error(INTERNAL, "recursive call to ray_fifo_in()");
126  
127 <        if (r_fifo_start >= 1L<<30) {           /* reset our counters */
127 >                                                /* need to reset our FIFO? */
128 >        if ((r_fifo_start >= 1L<<30) | (r_fifo_len > MAXFIFO)) {
129                  if ((rv = ray_fifo_flush()) < 0)
130                          {--incall; return(-1);}
131                  rval += rv;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines