diff --git a/src/server/services/wms/qgsmaprendererjobproxy.cpp b/src/server/services/wms/qgsmaprendererjobproxy.cpp index a321f0fe97d9..cf6e3a8dae59 100644 --- a/src/server/services/wms/qgsmaprendererjobproxy.cpp +++ b/src/server/services/wms/qgsmaprendererjobproxy.cpp @@ -56,6 +56,13 @@ namespace QgsWms renderJob.setFeatureFilterProvider( mFeatureFilterProvider ); #endif renderJob.start(); + + // Allows the main thread to manage blocking call coming from rendering + // threads (see discussion in https://issues.qgis.org/issues/18988). + QEventLoop loop; + QObject::connect( &renderJob, &QgsMapRendererParallelJob::finished, &loop, &QEventLoop::quit ); + loop.exec(); + renderJob.waitForFinished(); *image = renderJob.renderedImage(); mPainter.reset( new QPainter( image ) );