Skip to content

Commit ea15e44

Browse files
committed
Only use one single lock
1 parent e41680a commit ea15e44

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

src/analysis/vector/geometry_checker/qgsfeaturepool.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ QgsFeatureIds QgsFeaturePool::getFeatureIds() const
7070

7171
QgsFeatureIds QgsFeaturePool::getIntersects( const QgsRectangle &rect ) const
7272
{
73-
QgsReadWriteLocker locker( mIndexLock, QgsReadWriteLocker::Read );
73+
QgsReadWriteLocker locker( mCacheLock, QgsReadWriteLocker::Read );
7474
QgsFeatureIds ids = QgsFeatureIds::fromList( mIndex.intersects( rect ) );
7575
return ids;
7676
}
@@ -84,14 +84,14 @@ QgsVectorLayer *QgsFeaturePool::layer() const
8484

8585
void QgsFeaturePool::insertFeature( const QgsFeature &feature )
8686
{
87-
QgsReadWriteLocker locker( mIndexLock, QgsReadWriteLocker::Write );
87+
QgsReadWriteLocker locker( mCacheLock, QgsReadWriteLocker::Write );
8888
mFeatureCache.insert( feature.id(), new QgsFeature( feature ) );
8989
mIndex.insertFeature( feature );
9090
}
9191

9292
void QgsFeaturePool::refreshCache( const QgsFeature &feature )
9393
{
94-
QgsReadWriteLocker locker( mIndexLock, QgsReadWriteLocker::Write );
94+
QgsReadWriteLocker locker( mCacheLock, QgsReadWriteLocker::Write );
9595
mFeatureCache.remove( feature.id() );
9696
mIndex.deleteFeature( feature );
9797
locker.unlock();
@@ -103,7 +103,7 @@ void QgsFeaturePool::refreshCache( const QgsFeature &feature )
103103
void QgsFeaturePool::removeFeature( const QgsFeatureId featureId )
104104
{
105105
QgsFeature origFeature;
106-
QgsReadWriteLocker locker( mIndexLock, QgsReadWriteLocker::Unlocked );
106+
QgsReadWriteLocker locker( mCacheLock, QgsReadWriteLocker::Unlocked );
107107
if ( get( featureId, origFeature ) )
108108
{
109109
locker.changeMode( QgsReadWriteLocker::Write );

src/analysis/vector/geometry_checker/qgsfeaturepool.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,8 @@ class ANALYSIS_EXPORT QgsFeaturePool : public QgsFeatureSink
132132
static const int CACHE_SIZE = 1000;
133133
QCache<QgsFeatureId, QgsFeature> mFeatureCache;
134134
QPointer<QgsVectorLayer> mLayer;
135-
QReadWriteLock mCacheLock;
135+
mutable QReadWriteLock mCacheLock;
136136
QgsFeatureIds mFeatureIds;
137-
mutable QReadWriteLock mIndexLock;
138137
QgsSpatialIndex mIndex;
139138
double mLayerToMapUnits = 1.0;
140139
QgsCoordinateTransform mLayerToMapTransform;

0 commit comments

Comments
 (0)