Skip to content

Commit 06738d4

Browse files
committed
fix #10198
1 parent 620220d commit 06738d4

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/mapserver/qgis_map_serv.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@
3232
#include "qgsmapserviceexception.h"
3333
#include "qgspallabeling.h"
3434
#include "qgsnetworkaccessmanager.h"
35+
#include "qgsmaplayerregistry.h"
3536

3637
#include <QDomDocument>
3738
#include <QNetworkDiskCache>
3839
#include <QImage>
3940
#include <QSettings>
4041
#include <QDateTime>
42+
#include <QScopedPointer>
4143

4244
//for CMAKE_INSTALL_PREFIX
4345
#include "qgsconfig.h"
@@ -280,7 +282,7 @@ int main( int argc, char * argv[] )
280282
QgsCapabilitiesCache capabilitiesCache;
281283

282284
//creating QgsMapRenderer is expensive (access to srs.db), so we do it here before the fcgi loop
283-
QgsMapRenderer* theMapRenderer = new QgsMapRenderer();
285+
QScopedPointer< QgsMapRenderer > theMapRenderer( new QgsMapRenderer );
284286
theMapRenderer->setLabelingEngine( new QgsPalLabeling() );
285287

286288
#ifdef QGSMSDEBUG
@@ -291,6 +293,10 @@ int main( int argc, char * argv[] )
291293

292294
while ( fcgi_accept() >= 0 )
293295
{
296+
QgsMapLayerRegistry::instance()->removeAllMapLayers();
297+
qgsapp.processEvents();
298+
299+
294300
if ( !logFile.isEmpty() )
295301
{
296302
#ifdef Q_WS_WIN
@@ -303,7 +309,7 @@ int main( int argc, char * argv[] )
303309
printRequestInfos(); //print request infos if in debug mode
304310

305311
//Request handler
306-
QgsRequestHandler* theRequestHandler = createRequestHandler();
312+
QScopedPointer<QgsRequestHandler> theRequestHandler( createRequestHandler() );
307313
QMap<QString, QString> parameterMap;
308314
try
309315
{
@@ -327,7 +333,6 @@ int main( int argc, char * argv[] )
327333
if ( paramIt == parameterMap.constEnd() )
328334
{
329335
theRequestHandler->sendServiceException( QgsMapServiceException( "ServiceNotSpecified", "Service not specified. The SERVICE parameter is mandatory" ) );
330-
delete theRequestHandler;
331336
continue;
332337
}
333338
else
@@ -342,7 +347,7 @@ int main( int argc, char * argv[] )
342347
{
343348
//error handling
344349
}
345-
QgsWCSServer wcsServer( configFilePath, parameterMap, p, theRequestHandler );
350+
QgsWCSServer wcsServer( configFilePath, parameterMap, p, theRequestHandler.take() );
346351
wcsServer.executeRequest();
347352
}
348353
else if ( serviceString == "WFS" )
@@ -352,7 +357,7 @@ int main( int argc, char * argv[] )
352357
{
353358
//error handling
354359
}
355-
QgsWFSServer wfsServer( configFilePath, parameterMap, p, theRequestHandler );
360+
QgsWFSServer wfsServer( configFilePath, parameterMap, p, theRequestHandler.take() );
356361
wfsServer.executeRequest();
357362
}
358363
else //WMS else
@@ -363,12 +368,11 @@ int main( int argc, char * argv[] )
363368
//error handling
364369
}
365370
//adminConfigParser->loadLabelSettings( theMapRenderer->labelingEngine() );
366-
QgsWMSServer wmsServer( configFilePath, parameterMap, p, theRequestHandler, theMapRenderer, &capabilitiesCache );
371+
QgsWMSServer wmsServer( configFilePath, parameterMap, p, theRequestHandler.take(), theMapRenderer.data(), &capabilitiesCache );
367372
wmsServer.executeRequest();
368373
}
369374
}
370375

371-
delete theMapRenderer;
372376
return 0;
373377
}
374378

0 commit comments

Comments
 (0)