@@ -476,24 +476,23 @@ bool QgsTracer::initGraph()
476
476
t1.start ();
477
477
int featuresCounted = 0 ;
478
478
bool enableInvisibleFeature = QgsSettings ().value ( QStringLiteral ( " /qgis/digitizing/snap_invisible_feature" ), false ).toBool ();
479
- for ( QgsVectorLayer *vl : qgis::as_const ( mLayers ) )
479
+ for ( const QgsVectorLayer *vl : qgis::as_const ( mLayers ) )
480
480
{
481
481
QgsFeatureRequest request;
482
482
bool filter = false ;
483
483
std::unique_ptr< QgsFeatureRenderer > renderer;
484
- QgsRenderContext *ctx = nullptr ;
485
- if ( !enableInvisibleFeature && mRenderContext )
484
+ std::unique_ptr<QgsRenderContext> ctx;
485
+
486
+ if ( !enableInvisibleFeature && mRenderContext && vl->renderer () )
486
487
{
487
- renderer.reset ( vl->renderer () ? vl->renderer ()->clone () : nullptr );
488
- mRenderContext ->expressionContext () << QgsExpressionContextUtils::layerScope ( vl );
489
- ctx = mRenderContext .get ();
490
- if ( renderer )
491
- {
492
- // setup scale for scale dependent visibility (rule based)
493
- renderer->startRender ( *ctx, vl->fields () );
494
- filter = renderer->capabilities () & QgsFeatureRenderer::Filter;
495
- request.setSubsetOfAttributes ( renderer->usedAttributes ( *ctx ), vl->fields () );
496
- }
488
+ renderer.reset ( vl->renderer ()->clone () );
489
+ ctx.reset ( new QgsRenderContext ( *mRenderContext .get () ) );
490
+ ctx->expressionContext () << QgsExpressionContextUtils::layerScope ( vl );
491
+
492
+ // setup scale for scale dependent visibility (rule based)
493
+ renderer->startRender ( *ctx.get (), vl->fields () );
494
+ filter = renderer->capabilities () & QgsFeatureRenderer::Filter;
495
+ request.setSubsetOfAttributes ( renderer->usedAttributes ( *ctx.get () ), vl->fields () );
497
496
}
498
497
else
499
498
{
@@ -510,10 +509,10 @@ bool QgsTracer::initGraph()
510
509
if ( !f.hasGeometry () )
511
510
continue ;
512
511
513
- if ( filter && ctx && renderer )
512
+ if ( filter )
514
513
{
515
514
ctx->expressionContext ().setFeature ( f );
516
- if ( !renderer->willRenderFeature ( f, *ctx ) )
515
+ if ( !renderer->willRenderFeature ( f, *ctx. get () ) )
517
516
{
518
517
continue ;
519
518
}
@@ -526,9 +525,9 @@ bool QgsTracer::initGraph()
526
525
return false ;
527
526
}
528
527
529
- if ( ctx && renderer )
528
+ if ( renderer )
530
529
{
531
- renderer->stopRender ( *ctx );
530
+ renderer->stopRender ( *ctx. get () );
532
531
}
533
532
}
534
533
int timeExtract = t1.elapsed ();
@@ -631,7 +630,7 @@ void QgsTracer::setDestinationCrs( const QgsCoordinateReferenceSystem &crs, cons
631
630
632
631
void QgsTracer::setRenderContext ( const QgsRenderContext *renderContext )
633
632
{
634
- mRenderContext = std::unique_ptr<QgsRenderContext> ( new QgsRenderContext ( *renderContext ) );
633
+ mRenderContext . reset ( new QgsRenderContext ( *renderContext ) );
635
634
invalidateGraph ();
636
635
}
637
636
0 commit comments