diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 5a586d4..470fdd7 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1556,9 +1556,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
1556 | } | 1556 | } |
1557 | 1557 | ||
1558 | /// <summary> | 1558 | /// <summary> |
1559 | /// Delete this group from its scene and tell all the scene presences about that deletion. | 1559 | /// Delete this group from its scene. |
1560 | /// </summary> | 1560 | /// </summary> |
1561 | /// <param name="silent">Broadcast deletions to all clients.</param> | 1561 | /// |
1562 | /// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood | ||
1563 | /// up and all avatars receive notification of its removal. Removal of the scene object from database backup | ||
1564 | /// must be handled by the caller. | ||
1565 | /// | ||
1566 | /// <param name="silent">If true then deletion is not broadcast to clients</param> | ||
1562 | public void DeleteGroup(bool silent) | 1567 | public void DeleteGroup(bool silent) |
1563 | { | 1568 | { |
1564 | // We need to keep track of this state in case this group is still queued for backup. | 1569 | // We need to keep track of this state in case this group is still queued for backup. |
@@ -1729,14 +1734,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
1729 | public virtual void ProcessBackup(IRegionDataStore datastore, bool forcedBackup) | 1734 | public virtual void ProcessBackup(IRegionDataStore datastore, bool forcedBackup) |
1730 | { | 1735 | { |
1731 | if (!m_isBackedUp) | 1736 | if (!m_isBackedUp) |
1737 | { | ||
1738 | // m_log.DebugFormat( | ||
1739 | // "[WATER WARS]: Ignoring backup of {0} {1} since object is not marked to be backed up", Name, UUID); | ||
1732 | return; | 1740 | return; |
1733 | 1741 | } | |
1734 | // Since this is the top of the section of call stack for backing up a particular scene object, don't let | ||
1735 | // any exception propogate upwards. | ||
1736 | 1742 | ||
1737 | if (IsDeleted || UUID == UUID.Zero) | 1743 | if (IsDeleted || UUID == UUID.Zero) |
1744 | { | ||
1745 | // m_log.DebugFormat( | ||
1746 | // "[WATER WARS]: Ignoring backup of {0} {1} since object is marked as already deleted", Name, UUID); | ||
1738 | return; | 1747 | return; |
1748 | } | ||
1739 | 1749 | ||
1750 | // Since this is the top of the section of call stack for backing up a particular scene object, don't let | ||
1751 | // any exception propogate upwards. | ||
1740 | try | 1752 | try |
1741 | { | 1753 | { |
1742 | if (!m_scene.ShuttingDown || // if shutting down then there will be nothing to handle the return so leave till next restart | 1754 | if (!m_scene.ShuttingDown || // if shutting down then there will be nothing to handle the return so leave till next restart |
@@ -1772,7 +1784,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1772 | if (HasGroupChanged) | 1784 | if (HasGroupChanged) |
1773 | { | 1785 | { |
1774 | // don't backup while it's selected or you're asking for changes mid stream. | 1786 | // don't backup while it's selected or you're asking for changes mid stream. |
1775 | if ((isTimeToPersist()) || (forcedBackup)) | 1787 | if (isTimeToPersist() || forcedBackup) |
1776 | { | 1788 | { |
1777 | // m_log.DebugFormat( | 1789 | // m_log.DebugFormat( |
1778 | // "[SCENE]: Storing {0}, {1} in {2}", | 1790 | // "[SCENE]: Storing {0}, {1} in {2}", |
@@ -1795,19 +1807,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
1795 | 1807 | ||
1796 | backup_group = null; | 1808 | backup_group = null; |
1797 | } | 1809 | } |
1798 | // else | 1810 | // else |
1799 | // { | 1811 | // { |
1800 | // m_log.DebugFormat( | 1812 | // m_log.DebugFormat( |
1801 | // "[SCENE]: Did not update persistence of object {0} {1}, selected = {2}", | 1813 | // "[SCENE]: Did not update persistence of object {0} {1}, selected = {2}", |
1802 | // Name, UUID, IsSelected); | 1814 | // Name, UUID, IsSelected); |
1803 | // } | 1815 | // } |
1804 | } | 1816 | } |
1805 | } | 1817 | } |
1806 | catch (Exception e) | 1818 | catch (Exception e) |
1807 | { | 1819 | { |
1808 | m_log.ErrorFormat( | 1820 | m_log.ErrorFormat( |
1809 | "[SCENE]: Storing of {0}, {1} in {2} failed with exception {3}\n\t{4}", | 1821 | "[SCENE]: Storing of {0}, {1} in {2} failed with exception {3}{4}", |
1810 | Name, UUID, m_scene.RegionInfo.RegionName, e, e.StackTrace); | 1822 | Name, UUID, m_scene.RegionInfo.RegionName, e.Message, e.StackTrace); |
1811 | } | 1823 | } |
1812 | } | 1824 | } |
1813 | 1825 | ||
@@ -2672,7 +2684,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2672 | part.ClearUndoState(); | 2684 | part.ClearUndoState(); |
2673 | } | 2685 | } |
2674 | 2686 | ||
2675 | m_scene.UnlinkSceneObject(objectGroup.UUID, true); | 2687 | m_scene.UnlinkSceneObject(objectGroup, true); |
2676 | objectGroup.m_isDeleted = true; | 2688 | objectGroup.m_isDeleted = true; |
2677 | 2689 | ||
2678 | objectGroup.lockPartsForWrite(true); | 2690 | objectGroup.lockPartsForWrite(true); |