From 514db35cf81adb3539d1ab564da58934b192b8bc Mon Sep 17 00:00:00 2001 From: Blottiere Paul Date: Thu, 18 Oct 2018 14:01:03 +0100 Subject: [PATCH] Fixes freeze of server during rendering --- src/server/services/wms/qgsmaprendererjobproxy.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/server/services/wms/qgsmaprendererjobproxy.cpp b/src/server/services/wms/qgsmaprendererjobproxy.cpp index a321f0fe97d..b7df6176c83 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 #18988). + QEventLoop loop; + QObject::connect( &renderJob, &QgsMapRendererParallelJob::finished, &loop, &QEventLoop::quit ); + loop.exec(); + renderJob.waitForFinished(); *image = renderJob.renderedImage(); mPainter.reset( new QPainter( image ) );