Skip to content

Commit 91c9130

Browse files
committed
Run canvas preview jobs sequentially
Only start the next job when the previous one has completely finished. Avoids flooding connection pools with too many quick requests.
1 parent 01e8ed8 commit 91c9130

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/gui/qgsmapcanvas.cpp

+8-5
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,13 @@ void QgsMapCanvas::previewJobFinished()
634634
{
635635
mMap->addPreviewImage( job->renderedImage(), job->mapSettings().extent() );
636636
mPreviewJobs.removeAll( job );
637+
638+
int number = job->property( "number" ).toInt();
639+
if ( number < 8 )
640+
{
641+
startPreviewJob( number + 1 );
642+
}
643+
637644
delete job;
638645
}
639646
}
@@ -2289,14 +2296,10 @@ void QgsMapCanvas::startPreviewJob( int number )
22892296
jobSettings.setLayers( previewLayers );
22902297

22912298
QgsMapRendererQImageJob *job = new QgsMapRendererSequentialJob( jobSettings );
2299+
job->setProperty( "number", number );
22922300
mPreviewJobs.append( job );
22932301
connect( job, &QgsMapRendererJob::finished, this, &QgsMapCanvas::previewJobFinished );
22942302
job->start();
2295-
2296-
if ( number < 8 )
2297-
{
2298-
schedulePreviewJob( number + 1 );
2299-
}
23002303
}
23012304

23022305
void QgsMapCanvas::stopPreviewJobs()

0 commit comments

Comments
 (0)