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.35 by gwlarson, Mon Jan 25 09:58:41 1999 UTC vs.
Revision 3.37 by gwlarson, Wed Feb 10 17:09:20 1999 UTC

# Line 191 | Line 191 | memerr:
191   }
192  
193  
194 < markdirty(hp, i)                /* mark holodeck directory position dirty */
194 > hdmarkdirty(hp, i)              /* mark holodeck directory position dirty */
195   register HOLO   *hp;
196   int     i;
197   {
# Line 203 | Line 203 | int    i;
203                  if (lseek(hp->fd, biglob(hp)->fo+(i-1)*sizeof(BEAMI), 0) < 0
204                                  || write(hp->fd, (char *)&smudge,
205                                          sizeof(BEAMI)) != sizeof(BEAMI))
206 <                        error(SYSTEM, "seek/write error in markdirty");
206 >                        error(SYSTEM, "seek/write error in hdmarkdirty");
207                  hp->dirseg[0].s = i;
208                  hp->dirseg[0].n = 1;
209                  return;
# Line 650 | Line 650 | register int   i;
650                  hp->bi[i].fo = 0L;
651          biglob(hp)->nrd += nrays - hp->bi[i].nrd;
652          hp->bi[i].nrd = nrays;
653 <        markdirty(hp, i);               /* section directory now out of date */
653 >        hdmarkdirty(hp, i);             /* section directory now out of date */
654          return(1);
655   }
656  
# Line 671 | Line 671 | register int   i;
671          if (hdfragl[hp->fd].writerr)    /* check for file error */
672                  return(0);
673          if (i == 0) {                   /* clear entire holodeck */
674 +                if (blglob(hp)->nrm == 0)
675 +                        return(0);              /* already clear */
676                  nchanged = 0;
677                  for (i = nbeams(hp); i > 0; i--)
678                          if (hp->bl[i] != NULL)
679                                  nchanged += hdfreebeam(hp, i);
680 +                DCHECK(blglob(hp)->nrm != 0,
681 +                                CONSISTENCY, "bad beam count in hdfreebeam");
682                  return(nchanged);
683          }
684          DCHECK(i < 1 | i > nbeams(hp),
# Line 706 | Line 710 | register int   i;
710                  return(nchanged);
711          }
712          if (i == 0) {                   /* clobber entire holodeck */
713 +                if (biglob(hp)->nrd == 0 & blglob(hp)->nrm == 0)
714 +                        return(0);              /* already empty */
715                  nchanged = 0;
716 +                nchanged = 0;
717                  for (i = nbeams(hp); i > 0; i--)
718                          if (hp->bi[i].nrd > 0 || hp->bl[i] != NULL)
719                                  nchanged += hdkillbeam(hp, i);
# Line 822 | Line 829 | register HOLO  *hp;            /* NULL means clean up all */
829                  return;
830          }
831                                          /* flush all data and free memory */
832 <        hdfreebeam(hp, 0);
826 <        hdsync(hp, 0);
832 >        hdflush(hp);
833                                          /* release fragment resources */
834          hdrelease(hp->fd);
835                                          /* remove hp from active list */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines