diff -r a6413a3d741d -r 228cb8bfdd54 src/sampler.cc --- a/src/sampler.cc Fri Mar 28 23:30:04 2008 +0100 +++ b/src/sampler.cc Sat Mar 29 02:17:22 2008 +0100 @@ -59,10 +59,8 @@ } } -Sample* DefaultSampler::nextSample() +bool DefaultSampler::nextSample(Sample* s) { - DefaultSample *s = new DefaultSample; - /* grid oversampling */ static const int gridsamples[] = {1,5,9,16}; static const Float osa5x[] = {0.0, -0.4, +0.4, +0.4, -0.4}; @@ -109,11 +107,10 @@ sx = 0; sy++; } + if (sy >= h) - { - delete s; - return NULL; - } + return false; + s->x = (Float)sx/h - (Float)w/h/2.0; s->y = (Float)sy/h - 0.5; osa_samp = 0; @@ -133,13 +130,13 @@ s->sx = sx; s->sy = sy; s->osa_samp = osa_samp; - return s; + + return true; } -void DefaultSampler::saveSample(Sample *samp, Colour &col) +void DefaultSampler::saveSample(Sample &samp, Colour &col) { - DefaultSample *sp = static_cast(samp); - Float *buf = buffer + 3*(sp->sy*w + sp->sx); + Float *buf = buffer + 3*(samp.sy * w + samp.sx); if (oversample) { *(buf+0) += col.r;