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

Comparing ray/src/rt/raypcalls.c (file contents):
Revision 2.30 by greg, Fri Apr 19 16:28:57 2019 UTC vs.
Revision 2.36 by greg, Sat Apr 6 00:00:22 2024 UTC

# Line 147 | Line 147 | static const char      RCSid[] = "$Id$";
147   #include  "selcall.h"
148  
149   #ifndef RAYQLEN
150 < #define RAYQLEN         12              /* # rays to send at once */
150 > #define RAYQLEN         24              /* # rays to send at once */
151   #endif
152  
153   #ifndef MAX_RPROCS
# Line 212 | Line 212 | ray_pflush(void)                       /* send queued rays to idle childre
212          for (i = ray_pnprocs; nc && i--; ) {
213                  if (r_proc[i].npending > 0)
214                          continue;       /* child looks busy */
215 <                n = (r_send_next - sfirst)/nc--;
215 >                n = (r_send_next - sfirst) / nc--;
216                  if (!n)
217                          continue;
218                                          /* smuggle set size in crtype */
# Line 510 | Line 510 | ray_pclose(            /* close one or more child processes */
510          static int      inclose = 0;
511          RAY             res;
512          int             i, status = 0;
513 +                                        /* check no child / in child */
514 +        if (ray_pnprocs <= 0)
515 +                return;
516                                          /* check recursion */
517          if (inclose)
518                  return;
519          inclose++;
517                                        /* check no child / in child */
518        if (ray_pnprocs <= 0)
519                return;
520                                          /* check argument */
521          if ((nsub <= 0) | (nsub > ray_pnprocs))
522                  nsub = ray_pnprocs;
523 <                                        /* clear our ray queue */
523 >        i = 0;                          /* clear our ray queue */
524          while (ray_presult(&res,0) > 0)
525 <                ;
525 >                ++i;
526 >        if (i) {
527 >                sprintf(errmsg, "dropped %d ray results in ray_pclose()", i);
528 >                error(WARNING, errmsg);
529 >        }
530          r_send_next = 0;                /* hard reset in case of error */
531          r_recv_first = r_recv_next = RAYQLEN;
532                                          /* close send pipes */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines