mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
fix crasher when rendering a symbol layer subsequent to
rendering a geometry generator layer Fixes #19121 https://issues.qgis.org/issues/19121
This commit is contained in:
parent
4f8c9e18ab
commit
5c855b417f
@ -688,6 +688,27 @@ class ExpressionContextScopePopper
|
|||||||
|
|
||||||
QgsExpressionContext *context = nullptr;
|
QgsExpressionContext *context = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RAII class to restore original geometry on a render context on destruction
|
||||||
|
*/
|
||||||
|
class GeometryRestorer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GeometryRestorer( QgsRenderContext &context )
|
||||||
|
: mContext( context ),
|
||||||
|
mGeometry( context.geometry() )
|
||||||
|
{}
|
||||||
|
|
||||||
|
~GeometryRestorer()
|
||||||
|
{
|
||||||
|
mContext.setGeometry( mGeometry );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QgsRenderContext &mContext;
|
||||||
|
const QgsAbstractGeometry *mGeometry;
|
||||||
|
};
|
||||||
///@endcond PRIVATE
|
///@endcond PRIVATE
|
||||||
|
|
||||||
void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker, int currentVertexMarkerType, int currentVertexMarkerSize )
|
void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker, int currentVertexMarkerType, int currentVertexMarkerSize )
|
||||||
@ -698,6 +719,7 @@ void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &cont
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GeometryRestorer geomRestorer( context );
|
||||||
QgsGeometry segmentizedGeometry = geom;
|
QgsGeometry segmentizedGeometry = geom;
|
||||||
bool usingSegmentizedGeometry = false;
|
bool usingSegmentizedGeometry = false;
|
||||||
context.setGeometry( geom.constGet() );
|
context.setGeometry( geom.constGet() );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user