12 |
|
#include "otypes.h" |
13 |
|
#include "source.h" |
14 |
|
|
15 |
– |
char *shm_boundary = NULL; /* boundary of shared memory */ |
16 |
– |
|
15 |
|
CUBE thescene; /* our scene */ |
16 |
|
OBJECT nsceneobjs; /* number of objects in our scene */ |
17 |
|
|
66 |
|
|
67 |
|
static void trace_contrib(RAY *r); /* our trace callback */ |
68 |
|
|
69 |
< |
static void mcfree(void *p) { epfree((*(MODCONT *)p).binv); free(p); } |
69 |
> |
static void mcfree(void *p) { epfree((*(MODCONT *)p).binv,1); free(p); } |
70 |
|
|
71 |
|
LUTAB modconttab = LU_SINIT(NULL,mcfree); /* modifier lookup table */ |
72 |
|
|
224 |
|
if (nproc > MAXPROCESS) |
225 |
|
sprintf(errmsg, "too many processes requested -- reducing to %d", |
226 |
|
nproc = MAXPROCESS); |
227 |
< |
if (nproc > 1) { |
228 |
< |
preload_objs(); /* preload auxiliary data */ |
231 |
< |
/* set shared memory boundary */ |
232 |
< |
shm_boundary = strcpy((char *)malloc(16), "SHM_BOUNDARY"); |
233 |
< |
} |
227 |
> |
if (nproc > 1) |
228 |
> |
cow_memshare(); /* preload auxiliary data */ |
229 |
|
trace = trace_contrib; /* set up trace call-back */ |
230 |
|
for (i = 0; i < nsources; i++) /* tracing to sources as well */ |
231 |
|
source[i].sflags |= SFOLLOW; |