diff options
Merge branch 'master' into careminster-presence-refactor
Also prevent god takes from ending up in Lost and Found
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index bcb715b..896300f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -171,10 +171,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
171 | } | 171 | } |
172 | } | 172 | } |
173 | m_hasGroupChanged = value; | 173 | m_hasGroupChanged = value; |
174 | |||
175 | // m_log.DebugFormat( | ||
176 | // "[SCENE OBJECT GROUP]: HasGroupChanged set to {0} for {1} {2}", m_hasGroupChanged, Name, LocalId); | ||
174 | } | 177 | } |
175 | 178 | ||
176 | get { return m_hasGroupChanged; } | 179 | get { return m_hasGroupChanged; } |
177 | } | 180 | } |
181 | |||
182 | /// <summary> | ||
183 | /// Has the group changed due to an unlink operation? We record this in order to optimize deletion, since | ||
184 | /// an unlinked group currently has to be persisted to the database before we can perform an unlink operation. | ||
185 | /// </summary> | ||
186 | public bool HasGroupChangedDueToDelink { get; private set; } | ||
178 | 187 | ||
179 | private bool isTimeToPersist() | 188 | private bool isTimeToPersist() |
180 | { | 189 | { |
@@ -1622,6 +1631,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1622 | backup_group.RootPart.AngularVelocity = RootPart.AngularVelocity; | 1631 | backup_group.RootPart.AngularVelocity = RootPart.AngularVelocity; |
1623 | backup_group.RootPart.ParticleSystem = RootPart.ParticleSystem; | 1632 | backup_group.RootPart.ParticleSystem = RootPart.ParticleSystem; |
1624 | HasGroupChanged = false; | 1633 | HasGroupChanged = false; |
1634 | HasGroupChangedDueToDelink = false; | ||
1625 | 1635 | ||
1626 | m_scene.EventManager.TriggerOnSceneObjectPreSave(backup_group, this); | 1636 | m_scene.EventManager.TriggerOnSceneObjectPreSave(backup_group, this); |
1627 | datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID); | 1637 | datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID); |
@@ -2540,8 +2550,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2540 | 2550 | ||
2541 | linkPart.Rezzed = RootPart.Rezzed; | 2551 | linkPart.Rezzed = RootPart.Rezzed; |
2542 | 2552 | ||
2543 | //HasGroupChanged = true; | 2553 | // When we delete a group, we currently have to force persist to the database if the object id has changed |
2544 | //ScheduleGroupForFullUpdate(); | 2554 | // (since delete works by deleting all rows which have a given object id) |
2555 | objectGroup.HasGroupChangedDueToDelink = true; | ||
2545 | 2556 | ||
2546 | return objectGroup; | 2557 | return objectGroup; |
2547 | } | 2558 | } |