diff options
author | Justin Clark-Casey (justincc) | 2010-09-07 00:34:06 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2010-09-07 01:12:06 +0100 |
commit | 11f4a65f42dea66091cb08423479fa6ae46c98aa (patch) | |
tree | f16956aa3d2cac3ae325ffda621f2bd79b40310e /OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |
parent | Add test that checks correct persistence when an unlink is quickly followed b... (diff) | |
download | opensim-SC-11f4a65f42dea66091cb08423479fa6ae46c98aa.zip opensim-SC-11f4a65f42dea66091cb08423479fa6ae46c98aa.tar.gz opensim-SC-11f4a65f42dea66091cb08423479fa6ae46c98aa.tar.bz2 opensim-SC-11f4a65f42dea66091cb08423479fa6ae46c98aa.tar.xz |
Fix deletion persistence when freshly delinked prims are removed
Previously, Scene.Inventory.DeRezObjects() forced the persistence of prims before deletion.
This is necessary so that freshly delinked prims can be deleted (otherwise they remain as parts of their old group and reappear on server restart).
However, DeRezObjects() deleted to user inventory, which is required by llDie() or direct region module unlink and deletion.
Therefore, forced persistence has been pushed down into Scene.UnlinkSceneObject() to be more general, this is still on the DeRezObjects() path.
Uncommented TestDelinkPersistence() since this now passes.
Tests required considerable elaboration of MockRegionDataPlugin to reflect underlying storing of parts.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 4e871d9..c49386a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1720,7 +1720,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1720 | public virtual void DeRezObject(IClientAPI remoteClient, uint localID, | 1720 | public virtual void DeRezObject(IClientAPI remoteClient, uint localID, |
1721 | UUID groupID, DeRezAction action, UUID destinationID) | 1721 | UUID groupID, DeRezAction action, UUID destinationID) |
1722 | { | 1722 | { |
1723 | DeRezObjects(remoteClient, new List<uint>() { localID} , groupID, action, destinationID); | 1723 | DeRezObjects(remoteClient, new List<uint>() { localID }, groupID, action, destinationID); |
1724 | } | 1724 | } |
1725 | 1725 | ||
1726 | public virtual void DeRezObjects(IClientAPI remoteClient, List<uint> localIDs, | 1726 | public virtual void DeRezObjects(IClientAPI remoteClient, List<uint> localIDs, |
@@ -1757,11 +1757,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1757 | deleteIDs.Add(localID); | 1757 | deleteIDs.Add(localID); |
1758 | deleteGroups.Add(grp); | 1758 | deleteGroups.Add(grp); |
1759 | 1759 | ||
1760 | // Force a database backup/update on this SceneObjectGroup | ||
1761 | // So that we know the database is upto date, | ||
1762 | // for when deleting the object from it | ||
1763 | ForceSceneObjectBackup(grp); | ||
1764 | |||
1765 | if (remoteClient == null) | 1760 | if (remoteClient == null) |
1766 | { | 1761 | { |
1767 | // Autoreturn has a null client. Nothing else does. So | 1762 | // Autoreturn has a null client. Nothing else does. So |