On mardi 19 septembre 2017 18:30:50 CEST Sandro Mani wrote: > On 11.07.2017 14:31, Even Rouault wrote: > > We could potentially imagine to defer the repacking at > > leaveUpdateMode() time, actually in the close() method which is called > > when the reference counter of the update mode drops to zero (*), > > instead of doing it at the end of each operation. > > To come back to this, I was looking at moving replack() to close(), but > noticed that syncToDisc() has the logic "for shapefiles, remove spatial > index files and create a new index" which calls close. And syncToDisk is > still called after every change. So should syncToDisk be also moved to > close(), or at least blocked if an updateMode is active? >
Yes that would probably make sense to block syncToDisk() while in updateMode (so when mUpdateModeStackDepth > 0), but probably only if enterUpdateMode() is called by QgsVectorLayer::startEditing(), and not when called implicitly by doInitialActionsForEdition(), which might be the case if someone directly works at the provider level bool QgsOgrProvider::doInitialActionsForEdition() { if ( !mValid ) return false; if ( !mWriteAccess && mWriteAccessPossible && mDynamicWriteAccess ) { QgsDebugMsg( "Enter update mode implictly" ); if ( !enterUpdateMode() ) return false; } return true; } So probably a mImplicitUpdateMode flag should be set above near the QgsDebugMsg(), and the check to decide whether we can defer syncToDisk() would be ( !mImplicitUpdateMode && mUpdateModeStackDepth > 0) > Thanks > Sandro > _______________________________________________ > QGIS-Developer mailing list > QGIS-Developer@lists.osgeo.org > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer -- Spatialys - Geospatial professional services http://www.spatialys.com
_______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer