Skip to content

Commit 6fa3bf8

Browse files
committedFeb 1, 2019
Allow vector rendering cancelation to also cancel feature iteration for that request
Connect the cancel rendering signal to the iteration cancelation. This allows providers (e.g. WFS, AFS) to abort slow network requests when they have been triggered by a render request and that request is no longer required. Allows much faster quit, render cancelation when using WFS/AFS layers.
1 parent 4f8e231 commit 6fa3bf8

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed
 

‎src/core/qgsvectorlayerrenderer.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
QgsVectorLayerRenderer::QgsVectorLayerRenderer( QgsVectorLayer *layer, QgsRenderContext &context )
4343
: QgsMapLayerRenderer( layer->id() )
4444
, mContext( context )
45-
, mInterruptionChecker( context )
45+
, mInterruptionChecker( qgis::make_unique< QgsVectorLayerRendererInterruptionChecker >( context ) )
4646
, mLayer( layer )
4747
, mFields( layer->fields() )
4848
, mLabeling( false )
@@ -106,6 +106,10 @@ QgsVectorLayerRenderer::~QgsVectorLayerRenderer()
106106
delete mSource;
107107
}
108108

109+
QgsFeedback *QgsVectorLayerRenderer::feedback() const
110+
{
111+
return mInterruptionChecker.get();
112+
}
109113

110114
bool QgsVectorLayerRenderer::render()
111115
{
@@ -239,7 +243,7 @@ bool QgsVectorLayerRenderer::render()
239243
// slow fetchFeature() implementations, such as in the WFS provider, can
240244
// check it, instead of relying on just the mContext.renderingStopped() check
241245
// in drawRenderer()
242-
fit.setInterruptionChecker( &mInterruptionChecker );
246+
fit.setInterruptionChecker( mInterruptionChecker.get() );
243247

244248
if ( ( mRenderer->capabilities() & QgsFeatureRenderer::SymbolLevels ) && mRenderer->usingSymbolLevels() )
245249
drawRendererLevels( fit );

‎src/core/qgsvectorlayerrenderer.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class QgsVectorLayerRenderer : public QgsMapLayerRenderer
7676
public:
7777
QgsVectorLayerRenderer( QgsVectorLayer *layer, QgsRenderContext &context );
7878
~QgsVectorLayerRenderer() override;
79+
QgsFeedback *feedback() const override;
7980

8081
bool render() override;
8182

@@ -107,7 +108,7 @@ class QgsVectorLayerRenderer : public QgsMapLayerRenderer
107108

108109
QgsRenderContext &mContext;
109110

110-
QgsVectorLayerRendererInterruptionChecker mInterruptionChecker;
111+
std::unique_ptr< QgsVectorLayerRendererInterruptionChecker > mInterruptionChecker;
111112

112113
//! The rendered layer
113114
QgsVectorLayer *mLayer = nullptr;

0 commit comments

Comments
 (0)
Please sign in to comment.