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]; |