File tree Expand file tree Collapse file tree 2 files changed +10
-8
lines changed Expand file tree Collapse file tree 2 files changed +10
-8
lines changed Original file line number Diff line number Diff line change @@ -75,19 +75,15 @@ void QgsProcessingToolboxModelNode::deleteChildren()
75
75
//
76
76
77
77
QgsProcessingToolboxModelProviderNode::QgsProcessingToolboxModelProviderNode ( QgsProcessingProvider *provider )
78
- : mProvider( provider )
78
+ : mProviderId( provider->id () )
79
+ , mProvider( provider )
79
80
{}
80
81
81
82
QgsProcessingProvider *QgsProcessingToolboxModelProviderNode::provider ()
82
83
{
83
84
return mProvider ;
84
85
}
85
86
86
- QString QgsProcessingToolboxModelProviderNode::providerId () const
87
- {
88
- return mProvider ? mProvider ->id () : QString ();
89
- }
90
-
91
87
//
92
88
// QgsProcessingToolboxModelGroupNode
93
89
//
Original file line number Diff line number Diff line change @@ -175,11 +175,17 @@ class GUI_EXPORT QgsProcessingToolboxModelProviderNode : public QgsProcessingToo
175
175
/* *
176
176
* Returns the provider ID.
177
177
*/
178
- QString providerId () const ;
178
+ QString providerId () const { return mProviderId ; }
179
179
180
180
private:
181
181
182
- QgsProcessingProvider *mProvider = nullptr ;
182
+ // NOTE: we store both the provider ID and a pointer to the provider here intentionally.
183
+ // We store the provider pointer to avoid having to lookup the provider from the registry
184
+ // everytime the node is used (which kills performance in the filter proxy model), but
185
+ // we also store the provider id string in order to identify the provider that the node
186
+ // is linked to for cleanups after the provider is removed.
187
+ QString mProviderId ;
188
+ QPointer< QgsProcessingProvider > mProvider ;
183
189
184
190
};
185
191
You can’t perform that action at this time.
0 commit comments