diff --git a/src/analysis/raster/qgsrastercalculator.cpp b/src/analysis/raster/qgsrastercalculator.cpp index 4083d5757c0..a421bd66932 100644 --- a/src/analysis/raster/qgsrastercalculator.cpp +++ b/src/analysis/raster/qgsrastercalculator.cpp @@ -88,7 +88,16 @@ int QgsRasterCalculator::processCalculation( QgsFeedback *feedback ) proj.setInput( it->raster->dataProvider() ); proj.setPrecision( QgsRasterProjector::Exact ); - block = proj.block( it->bandNumber, mOutputRectangle, mNumOutputColumns, mNumOutputRows ); + QgsRasterBlockFeedback *rasterBlockFeedback = new QgsRasterBlockFeedback(); + QObject::connect( feedback, &QgsFeedback::canceled, rasterBlockFeedback, &QgsRasterBlockFeedback::cancel ); + block = proj.block( it->bandNumber, mOutputRectangle, mNumOutputColumns, mNumOutputRows, rasterBlockFeedback ); + if ( rasterBlockFeedback->isCanceled() ) + { + delete block; + delete calcNode; + qDeleteAll( inputBlocks ); + return static_cast< int >( Canceled ); + } } else {