Skip to content

Commit 634274e

Browse files
committedApr 4, 2018
Insure canvas rendering jobs are cancelled when exiting QGIS
1 parent d48818b commit 634274e

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,8 +1326,6 @@ QgisApp::QgisApp()
13261326

13271327
QgisApp::~QgisApp()
13281328
{
1329-
stopRendering();
1330-
13311329
delete mInternalClipboard;
13321330
delete mQgisInterface;
13331331
delete mStyleSheetBuilder;
@@ -1416,6 +1414,12 @@ QgisApp::~QgisApp()
14161414
qDeleteAll( mCustomDropHandlers );
14171415
qDeleteAll( mCustomLayoutDropHandlers );
14181416

1417+
const QList<QgsMapCanvas *> canvases = mapCanvases();
1418+
for ( QgsMapCanvas *canvas : canvases )
1419+
{
1420+
delete canvas;
1421+
}
1422+
14191423
// This function *MUST* be the last one called, as it destroys in
14201424
// particular GDAL. As above objects can hold GDAL/OGR objects, it is not
14211425
// safe destroying them afterwards

‎src/gui/qgsmapcanvas.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,16 @@ QgsMapCanvas::~QgsMapCanvas()
211211
delete mJob;
212212
}
213213

214+
QList< QgsMapRendererQImageJob * >::const_iterator previewJob = mPreviewJobs.constBegin();
215+
for ( ; previewJob != mPreviewJobs.constEnd(); ++previewJob )
216+
{
217+
if ( *previewJob )
218+
{
219+
whileBlocking( *previewJob )->cancel();
220+
delete *previewJob;
221+
}
222+
}
223+
214224
// delete canvas items prior to deleting the canvas
215225
// because they might try to update canvas when it's
216226
// already being destructed, ends with segfault

0 commit comments

Comments
 (0)
Please sign in to comment.