From fa0c5a100da6afe58462709f2b3acf0f870112cb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 25 Jun 2012 18:01:01 +0000 Subject: fix for crash with blur - happened most when there was a size input, need to mutex lock before allocating the gauss array. also add suspiciously missing call to BlurBaseOperation::initExecution, X had but Y was missing. --- .../compositor/operations/COM_GaussianAlphaYBlurOperation.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp') diff --git a/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp index e1105cf94b1..ef5f9d5c31b 100644 --- a/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp @@ -36,10 +36,12 @@ GaussianAlphaYBlurOperation::GaussianAlphaYBlurOperation() : BlurBaseOperation(C void *GaussianAlphaYBlurOperation::initializeTileData(rcti *rect, MemoryBuffer **memoryBuffers) { + lockMutex(); if (!this->sizeavailable) { updateGauss(memoryBuffers); } void *buffer = getInputOperation(0)->initializeTileData(NULL, memoryBuffers); + unlockMutex(); return buffer; } @@ -47,6 +49,8 @@ void GaussianAlphaYBlurOperation::initExecution() { /* BlurBaseOperation::initExecution(); */ /* until we suppoer size input - comment this */ + initMutex(); + if (this->sizeavailable) { float rad = size * this->data->sizey; if (rad < 1) @@ -65,7 +69,7 @@ void GaussianAlphaYBlurOperation::updateGauss(MemoryBuffer **memoryBuffers) float rad = size * this->data->sizey; if (rad < 1) rad = 1; - + this->rad = rad; this->gausstab = BlurBaseOperation::make_gausstab(rad); } @@ -154,6 +158,8 @@ void GaussianAlphaYBlurOperation::deinitExecution() this->gausstab = NULL; delete [] this->distbuf_inv; this->distbuf_inv = NULL; + + deinitMutex(); } bool GaussianAlphaYBlurOperation::determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output) -- cgit v1.2.3