| 185 |
|
|
| 186 |
|
ray_init(otnm); /* load the shared scene */ |
| 187 |
|
|
| 188 |
– |
preload_objs(); /* preload auxiliary data */ |
| 189 |
– |
|
| 190 |
– |
/* set shared memory boundary */ |
| 191 |
– |
shm_boundary = (char *)malloc(16); |
| 192 |
– |
strcpy(shm_boundary, "SHM_BOUNDARY"); |
| 193 |
– |
|
| 188 |
|
r_send_next = 0; /* set up queue */ |
| 189 |
|
r_recv_first = r_recv_next = RAYQLEN; |
| 190 |
|
|
| 442 |
|
if (nadd <= 0) |
| 443 |
|
return; |
| 444 |
|
ambsync(); /* load any new ambient values */ |
| 445 |
+ |
if (shm_boundary == NULL) { /* first child process? */ |
| 446 |
+ |
preload_objs(); /* preload auxiliary data */ |
| 447 |
+ |
/* set shared memory boundary */ |
| 448 |
+ |
shm_boundary = (char *)malloc(16); |
| 449 |
+ |
strcpy(shm_boundary, "SHM_BOUNDARY"); |
| 450 |
+ |
} |
| 451 |
|
fflush(NULL); /* clear pending output */ |
| 452 |
|
while (nadd--) { /* fork each new process */ |
| 453 |
|
int p0[2], p1[2]; |