mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
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.
This commit is contained in:
parent
4f8e2317d7
commit
6fa3bf8e8b
@ -42,7 +42,7 @@
|
||||
QgsVectorLayerRenderer::QgsVectorLayerRenderer( QgsVectorLayer *layer, QgsRenderContext &context )
|
||||
: QgsMapLayerRenderer( layer->id() )
|
||||
, mContext( context )
|
||||
, mInterruptionChecker( context )
|
||||
, mInterruptionChecker( qgis::make_unique< QgsVectorLayerRendererInterruptionChecker >( context ) )
|
||||
, mLayer( layer )
|
||||
, mFields( layer->fields() )
|
||||
, mLabeling( false )
|
||||
@ -106,6 +106,10 @@ QgsVectorLayerRenderer::~QgsVectorLayerRenderer()
|
||||
delete mSource;
|
||||
}
|
||||
|
||||
QgsFeedback *QgsVectorLayerRenderer::feedback() const
|
||||
{
|
||||
return mInterruptionChecker.get();
|
||||
}
|
||||
|
||||
bool QgsVectorLayerRenderer::render()
|
||||
{
|
||||
@ -239,7 +243,7 @@ bool QgsVectorLayerRenderer::render()
|
||||
// slow fetchFeature() implementations, such as in the WFS provider, can
|
||||
// check it, instead of relying on just the mContext.renderingStopped() check
|
||||
// in drawRenderer()
|
||||
fit.setInterruptionChecker( &mInterruptionChecker );
|
||||
fit.setInterruptionChecker( mInterruptionChecker.get() );
|
||||
|
||||
if ( ( mRenderer->capabilities() & QgsFeatureRenderer::SymbolLevels ) && mRenderer->usingSymbolLevels() )
|
||||
drawRendererLevels( fit );
|
||||
|
@ -76,6 +76,7 @@ class QgsVectorLayerRenderer : public QgsMapLayerRenderer
|
||||
public:
|
||||
QgsVectorLayerRenderer( QgsVectorLayer *layer, QgsRenderContext &context );
|
||||
~QgsVectorLayerRenderer() override;
|
||||
QgsFeedback *feedback() const override;
|
||||
|
||||
bool render() override;
|
||||
|
||||
@ -107,7 +108,7 @@ class QgsVectorLayerRenderer : public QgsMapLayerRenderer
|
||||
|
||||
QgsRenderContext &mContext;
|
||||
|
||||
QgsVectorLayerRendererInterruptionChecker mInterruptionChecker;
|
||||
std::unique_ptr< QgsVectorLayerRendererInterruptionChecker > mInterruptionChecker;
|
||||
|
||||
//! The rendered layer
|
||||
QgsVectorLayer *mLayer = nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user