diff --git a/modules/FFTConvolver b/modules/FFTConvolver index f36929e..a6111d7 160000 --- a/modules/FFTConvolver +++ b/modules/FFTConvolver @@ -1 +1 @@ -Subproject commit f36929e3eae372f3b552bfc29b04bdb0a92b2087 +Subproject commit a6111d70c117041ff47608cf387280e9409f2b03 diff --git a/src/TwoStageThreadedConvolver.hpp b/src/TwoStageThreadedConvolver.hpp index 68971f1..5d9ad21 100644 --- a/src/TwoStageThreadedConvolver.hpp +++ b/src/TwoStageThreadedConvolver.hpp @@ -53,17 +53,21 @@ class TwoStageThreadedConvolver : public fftconvolver::TwoStageFFTConvolver, bool init(const fftconvolver::Sample* const ir, const size_t irLen) { - if (irLen > kTailBlockSize * 2) + if (fftconvolver::TwoStageFFTConvolver::init(kHeadBlockSize, kTailBlockSize, ir, irLen)) { - if (! fftconvolver::TwoStageFFTConvolver::init(kHeadBlockSize, kTailBlockSize, ir, irLen)) - return false; - startThread(true); return true; } - nonThreadedConvolver = new fftconvolver::FFTConvolver(); - return nonThreadedConvolver->init(kHeadBlockSize, ir, irLen); + ScopedPointer conv(new fftconvolver::FFTConvolver); + + if (conv->init(kHeadBlockSize, ir, irLen)) + { + nonThreadedConvolver = conv.release(); + return true; + } + + return false; } void process(const fftconvolver::Sample* const input, fftconvolver::Sample* const output, const size_t len)