mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
Insure canvas rendering jobs are cancelled when exiting QGIS
This commit is contained in:
parent
282a999ba8
commit
1b9f41d03d
@ -1362,8 +1362,6 @@ QgisApp::QgisApp()
|
||||
|
||||
QgisApp::~QgisApp()
|
||||
{
|
||||
stopRendering();
|
||||
|
||||
delete mInternalClipboard;
|
||||
delete mQgisInterface;
|
||||
delete mStyleSheetBuilder;
|
||||
@ -1452,6 +1450,12 @@ QgisApp::~QgisApp()
|
||||
qDeleteAll( mCustomDropHandlers );
|
||||
qDeleteAll( mCustomLayoutDropHandlers );
|
||||
|
||||
const QList<QgsMapCanvas *> canvases = mapCanvases();
|
||||
for ( QgsMapCanvas *canvas : canvases )
|
||||
{
|
||||
delete canvas;
|
||||
}
|
||||
|
||||
// This function *MUST* be the last one called, as it destroys in
|
||||
// particular GDAL. As above objects can hold GDAL/OGR objects, it is not
|
||||
// safe destroying them afterwards
|
||||
|
@ -211,6 +211,16 @@ QgsMapCanvas::~QgsMapCanvas()
|
||||
delete mJob;
|
||||
}
|
||||
|
||||
QList< QgsMapRendererQImageJob * >::const_iterator previewJob = mPreviewJobs.constBegin();
|
||||
for ( ; previewJob != mPreviewJobs.constEnd(); ++previewJob )
|
||||
{
|
||||
if ( *previewJob )
|
||||
{
|
||||
whileBlocking( *previewJob )->cancel();
|
||||
delete *previewJob;
|
||||
}
|
||||
}
|
||||
|
||||
// delete canvas items prior to deleting the canvas
|
||||
// because they might try to update canvas when it's
|
||||
// already being destructed, ends with segfault
|
||||
|
Loading…
x
Reference in New Issue
Block a user