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

Comparing ray/src/hd/holofile.c (file contents):
Revision 3.1 by gregl, Fri Oct 31 10:23:29 1997 UTC vs.
Revision 3.2 by gregl, Fri Oct 31 15:48:32 1997 UTC

# Line 303 | Line 303 | register int   i;
303                  register struct fragment        *f = hdfrag[hp->fd];
304                  register int    j, k;
305                                          /* relinquish old fragment */
306 <                if ((j = ++f->nfrags) >= MAXFRAG)
307 <                        f->nfrags--;
308 <                for ( ; ; ) {           /* stick it in our descending list */
309 <                        if (!--j || hp->bi[i].fo < f->fi[j-1].fo) {
310 <                                f->fi[j].fo = hp->bi[i].fo;
311 <                                f->fi[j].nrd = hp->bi[i].nrd;
312 <                                break;
306 >                if (hp->bi[i].nrd) {
307 >                        if ((j = ++f->nfrags) >= MAXFRAG)
308 >                                f->nfrags--;
309 >                        for ( ; ; ) {   /* stick it in our descending list */
310 >                                if (!--j || hp->bi[i].fo < f->fi[j-1].fo) {
311 >                                        f->fi[j].fo = hp->bi[i].fo;
312 >                                        f->fi[j].nrd = hp->bi[i].nrd;
313 >                                        break;
314 >                                }
315 >                                copystruct(f->fi+j, f->fi+j-1);
316                          }
314                        copystruct(f->fi+j, f->fi+j-1);
315                }
317                                          /* coalesce adjacent fragments */
318 <                for (j = k = 0; k < f->nfrags; j++, k++) {
319 <                        if (j != k)
320 <                                copystruct(f->fi+j, f->fi+k);
321 <                        while (k+1 < f->nfrags &&
322 <                                f->fi[k+1].fo + f->fi[k+1].nrd*sizeof(RAYVAL) ==
323 <                                        f->fi[j].fo)
324 <                                f->fi[j].fo -= f->fi[++k].nrd*sizeof(RAYVAL);
318 >                        for (j = k = 0; k < f->nfrags; j++, k++) {
319 >                                if (j != k)
320 >                                        copystruct(f->fi+j, f->fi+k);
321 >                                while (k+1 < f->nfrags &&
322 >                                f->fi[k+1].fo + f->fi[k+1].nrd*sizeof(RAYVAL)
323 >                                                == f->fi[j].fo)
324 >                                        f->fi[j].fo -=
325 >                                                f->fi[++k].nrd*sizeof(RAYVAL);
326 >                        }
327 >                        f->nfrags = j;
328                  }
325                f->nfrags = j;
329                  k = -1;                 /* find closest-sized fragment */
330                  for (j = f->nfrags; j-- > 0; )
331                          if (f->fi[j].nrd >= nrays &&

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines