| 52 |
|
goto memerr; |
| 53 |
|
for (i = nmods; i--; ) { |
| 54 |
|
MODCONT *mp = (MODCONT *)lu_find(&modconttab,modname[i])->data; |
| 55 |
< |
bp->mca[i] = (MODCONT *)malloc(sizeof(MODCONT) + |
| 56 |
< |
sizeof(DCOLOR)*(mp->nbins-1)); |
| 55 |
> |
bp->mca[i] = (MODCONT *)malloc(mcsize(mp->nbins)); |
| 56 |
|
if (bp->mca[i] == NULL) |
| 57 |
|
goto memerr; |
| 58 |
< |
memcpy(bp->mca[i], mp, sizeof(MODCONT)-sizeof(DCOLOR)); |
| 59 |
< |
/* memset(bp->mca[i]->cbin, 0, sizeof(DCOLOR)*mp->nbins); */ |
| 58 |
> |
memcpy(bp->mca[i], mp, sizeof(MODCONT)-sizeof(DCOLORV)); |
| 59 |
> |
/* memset(bp->mca[i]->cbin, 0, DCOLORSIZ*mp->nbins); */ |
| 60 |
|
} |
| 61 |
|
bp->ndx = 0; |
| 62 |
|
bp->nadded = 0; |
| 86 |
|
} |
| 87 |
|
/* clear sums for next use */ |
| 88 |
|
/* for (i = nmods; i--; ) |
| 89 |
< |
memset(bp->mca[i]->cbin, 0, sizeof(DCOLOR)*bp->mca[i]->nbins); |
| 89 |
> |
memset(bp->mca[i]->cbin, 0, DCOLORSIZ*bp->mca[i]->nbins); |
| 90 |
|
*/ |
| 91 |
|
if (bp->next != NULL) |
| 92 |
|
error(CONSISTENCY, "free_binq() handed list"); |
| 101 |
|
queue_modifiers() |
| 102 |
|
{ |
| 103 |
|
MODCONT *mpin, *mpout; |
| 104 |
< |
int i, j; |
| 104 |
> |
DCOLORV *ssrc, *sdst; |
| 105 |
> |
int i; |
| 106 |
|
|
| 107 |
|
if ((accumulate > 0) | (out_bq == NULL)) |
| 108 |
|
error(CONSISTENCY, "bad call to queue_modifiers()"); |
| 110 |
|
for (i = nmods; i--; ) { |
| 111 |
|
mpin = (MODCONT *)lu_find(&modconttab,modname[i])->data; |
| 112 |
|
mpout = out_bq->mca[i]; |
| 113 |
< |
for (j = mpout->nbins; j--; ) |
| 114 |
< |
addcolor(mpout->cbin[j], mpin->cbin[j]); |
| 115 |
< |
memset(mpin->cbin, 0, sizeof(DCOLOR)*mpin->nbins); |
| 113 |
> |
ssrc = mcbin(mpin, mpin->nbins); |
| 114 |
> |
sdst = mcbin(mpout, mpout->nbins); |
| 115 |
> |
while (sdst > mpout->cbin) |
| 116 |
> |
*--sdst += *--ssrc; |
| 117 |
> |
memset(mpin->cbin, 0, DCOLORSIZ*mpin->nbins); |
| 118 |
|
} |
| 119 |
|
out_bq->nadded++; |
| 120 |
|
} |
| 124 |
|
static void |
| 125 |
|
add_modbin(BINQ *dst, BINQ *src) |
| 126 |
|
{ |
| 127 |
< |
int i, j; |
| 128 |
< |
|
| 127 |
> |
MODCONT *mpin, *mpout; |
| 128 |
> |
DCOLORV *ssrc, *sdst; |
| 129 |
> |
int i; |
| 130 |
> |
|
| 131 |
|
for (i = nmods; i--; ) { |
| 132 |
< |
MODCONT *mpin = src->mca[i]; |
| 133 |
< |
MODCONT *mpout = dst->mca[i]; |
| 134 |
< |
for (j = mpout->nbins; j--; ) |
| 135 |
< |
addcolor(mpout->cbin[j], mpin->cbin[j]); |
| 132 |
> |
mpin = src->mca[i]; |
| 133 |
> |
mpout = dst->mca[i]; |
| 134 |
> |
ssrc = mcbin(mpin, mpin->nbins); |
| 135 |
> |
sdst = mcbin(mpout, mpout->nbins); |
| 136 |
> |
while (sdst > mpout->cbin) |
| 137 |
> |
*--sdst += *--ssrc; |
| 138 |
|
} |
| 139 |
|
dst->nadded += src->nadded; |
| 140 |
|
} |
| 237 |
|
int i; |
| 238 |
|
|
| 239 |
|
for (i = nmods; i--; ) |
| 240 |
< |
memset(bp->mca[i]->cbin, 0, sizeof(DCOLOR)*bp->mca[i]->nbins); |
| 240 |
> |
memset(bp->mca[i]->cbin, 0, DCOLORSIZ*bp->mca[i]->nbins); |
| 241 |
|
bp->ndx = ndx; |
| 242 |
|
bp->nadded = 1; |
| 243 |
|
queue_output(bp); |
| 256 |
|
bq->nadded = kida[k].nr; |
| 257 |
|
/* read from child */ |
| 258 |
|
for (j = 0; j < nmods; j++) |
| 259 |
< |
if (getbinary(bq->mca[j]->cbin, sizeof(DCOLOR), bq->mca[j]->nbins, |
| 259 |
> |
if (getbinary(bq->mca[j]->cbin, DCOLORSIZ, bq->mca[j]->nbins, |
| 260 |
|
kida[k].infp) != bq->mca[j]->nbins) |
| 261 |
|
error(SYSTEM, "read error from render process"); |
| 262 |
|
|