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
> [email protected]
> 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
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer