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

Comparing ray/src/rt/rtrace.c (file contents):
Revision 2.78 by greg, Sat May 4 23:10:32 2019 UTC vs.
Revision 2.79 by greg, Mon May 6 16:49:38 2019 UTC

# Line 118 | Line 118 | rtrace(                                /* trace rays from file */
118          unsigned long  vcount = (hresolu > 1) ? (unsigned long)hresolu*vresolu
119                                                : (unsigned long)vresolu;
120          long  nextflush = (vresolu > 0) & (hresolu > 1) ? 0 : hresolu;
121 <        int  bogusflushed = 0;
121 >        int  something2flush = 0;
122          FILE  *fp;
123          double  d;
124          FVECT  orig, direc;
# Line 137 | Line 137 | rtrace(                                /* trace rays from file */
137                  castonly = 0;
138          else if (castonly)
139                  nproc = 1;              /* don't bother multiprocessing */
140 +        if ((nextflush > 0) & (nproc > nextflush)) {
141 +                error(WARNING, "reducing number of processes to match flush interval");
142 +                nproc = nextflush;
143 +        }
144          switch (outform) {
145          case 'a': putreal = puta; break;
146          case 'f': putreal = putf; break;
# Line 164 | Line 168 | rtrace(                                /* trace rays from file */
168  
169                  d = normalize(direc);
170                  if (d == 0.0) {                         /* zero ==> flush */
171 <                        if ((--nextflush <= 0) | !vcount && !bogusflushed) {
171 >                        if ((--nextflush <= 0) | !vcount && something2flush) {
172                                  if (ray_pnprocs > 1 && ray_fifo_flush() < 0)
173                                          error(USER, "child(ren) died");
174                                  bogusray();
175                                  fflush(stdout);
176 <                                bogusflushed = 1;
176 >                                something2flush = 0;
177                                  nextflush = (vresolu > 0) & (hresolu > 1) ? 0 :
178                                                                  hresolu;
179                          } else
# Line 183 | Line 187 | rtrace(                                /* trace rays from file */
187                                  fflush(stdout);
188                                  nextflush = hresolu;
189                          } else
190 <                                bogusflushed = 0;
190 >                                something2flush = 1;
191                  }
192                  if (ferror(stdout))
193                          error(SYSTEM, "write error");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines