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

Comparing ray/src/rt/RtraceSimulManager.cpp (file contents):
Revision 2.17 by greg, Mon Sep 16 19:18:32 2024 UTC vs.
Revision 2.20 by greg, Thu Nov 7 18:37:11 2024 UTC

# Line 239 | Line 239 | RadSimulManager::WaitResult(RAY *r)
239   int
240   RadSimulManager::Cleanup(bool everything)
241   {
242 +        if (ray_pnprocs < 0)
243 +                return 0;               // skip in child process
244          NewHeader();
245          if (!ray_pnprocs)
246                  ray_done(everything);
# Line 277 | Line 279 | RtraceSimulManager::Rfifout(RAY *r)
279   bool
280   RtraceSimulManager::UpdateMode()
281   {
280        rtFlags &= RTmask;
282          if (!cookedCall)
283                  rtFlags &= ~RTdoFIFO;
284          if (!traceCall)
# Line 285 | Line 286 | RtraceSimulManager::UpdateMode()
286          if (rtFlags & RTimmIrrad)
287                  rtFlags &= ~RTlimDist;
288  
289 <        int     misMatch = rtFlags ^ curFlags;
289 >        int     misMatch = (rtFlags ^ curFlags) & RTmask;
290                                  // updates based on toggled flags
291          if (misMatch & RTtraceSources) {
292 +                int     sn = nsources;
293                  if (rtFlags & RTtraceSources) {
294 <                        for (int sn = 0; sn < nsources; sn++)
294 >                        srcFollowed.NewBitMap(nsources);
295 >                        while (sn--) {
296 >                                if (source[sn].sflags & SFOLLOW)
297 >                                        continue;
298                                  source[sn].sflags |= SFOLLOW;
299 <                } else          // cannot undo this...
300 <                        rtFlags |= RTtraceSources;
299 >                                srcFollowed.Set(sn);
300 >                        }
301 >                } else {
302 >                        while (sn--)
303 >                                if (srcFollowed.Check(sn))
304 >                                        source[sn].sflags &= ~SFOLLOW;
305 >                        srcFollowed.NewBitMap(0);
306 >                }
307          }
308          if (misMatch & RTdoFIFO && FlushQueue() < 0)
309                  return false;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines