32
32
#include " qgsmapserviceexception.h"
33
33
#include " qgspallabeling.h"
34
34
#include " qgsnetworkaccessmanager.h"
35
+ #include " qgsmaplayerregistry.h"
35
36
36
37
#include < QDomDocument>
37
38
#include < QNetworkDiskCache>
38
39
#include < QImage>
39
40
#include < QSettings>
40
41
#include < QDateTime>
42
+ #include < QScopedPointer>
41
43
42
44
// for CMAKE_INSTALL_PREFIX
43
45
#include " qgsconfig.h"
@@ -280,7 +282,7 @@ int main( int argc, char * argv[] )
280
282
QgsCapabilitiesCache capabilitiesCache;
281
283
282
284
// 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 );
284
286
theMapRenderer->setLabelingEngine ( new QgsPalLabeling () );
285
287
286
288
#ifdef QGSMSDEBUG
@@ -291,6 +293,10 @@ int main( int argc, char * argv[] )
291
293
292
294
while ( fcgi_accept () >= 0 )
293
295
{
296
+ QgsMapLayerRegistry::instance ()->removeAllMapLayers ();
297
+ qgsapp.processEvents ();
298
+
299
+
294
300
if ( !logFile.isEmpty () )
295
301
{
296
302
#ifdef Q_WS_WIN
@@ -303,7 +309,7 @@ int main( int argc, char * argv[] )
303
309
printRequestInfos (); // print request infos if in debug mode
304
310
305
311
// Request handler
306
- QgsRequestHandler* theRequestHandler = createRequestHandler ();
312
+ QScopedPointer< QgsRequestHandler> theRequestHandler ( createRequestHandler () );
307
313
QMap<QString, QString> parameterMap;
308
314
try
309
315
{
@@ -327,7 +333,6 @@ int main( int argc, char * argv[] )
327
333
if ( paramIt == parameterMap.constEnd () )
328
334
{
329
335
theRequestHandler->sendServiceException ( QgsMapServiceException ( " ServiceNotSpecified" , " Service not specified. The SERVICE parameter is mandatory" ) );
330
- delete theRequestHandler;
331
336
continue ;
332
337
}
333
338
else
@@ -342,7 +347,7 @@ int main( int argc, char * argv[] )
342
347
{
343
348
// error handling
344
349
}
345
- QgsWCSServer wcsServer ( configFilePath, parameterMap, p, theRequestHandler );
350
+ QgsWCSServer wcsServer ( configFilePath, parameterMap, p, theRequestHandler. take () );
346
351
wcsServer.executeRequest ();
347
352
}
348
353
else if ( serviceString == " WFS" )
@@ -352,7 +357,7 @@ int main( int argc, char * argv[] )
352
357
{
353
358
// error handling
354
359
}
355
- QgsWFSServer wfsServer ( configFilePath, parameterMap, p, theRequestHandler );
360
+ QgsWFSServer wfsServer ( configFilePath, parameterMap, p, theRequestHandler. take () );
356
361
wfsServer.executeRequest ();
357
362
}
358
363
else // WMS else
@@ -363,12 +368,11 @@ int main( int argc, char * argv[] )
363
368
// error handling
364
369
}
365
370
// adminConfigParser->loadLabelSettings( theMapRenderer->labelingEngine() );
366
- QgsWMSServer wmsServer ( configFilePath, parameterMap, p, theRequestHandler, theMapRenderer, &capabilitiesCache );
371
+ QgsWMSServer wmsServer ( configFilePath, parameterMap, p, theRequestHandler. take () , theMapRenderer. data () , &capabilitiesCache );
367
372
wmsServer.executeRequest ();
368
373
}
369
374
}
370
375
371
- delete theMapRenderer;
372
376
return 0 ;
373
377
}
374
378
0 commit comments