aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
diff options
context:
space:
mode:
authorJohn Hurliman2009-10-06 15:54:00 -0700
committerJohn Hurliman2009-10-06 15:54:00 -0700
commit832cc685138b2244529f10b54b373c34adb4a633 (patch)
tree888cf05d2d0bacdd8acec47150075423d07ed3ee /OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
parentChecks the number of ThreadPool and IOCP threads on startup and bumps up the ... (diff)
parentRewrote parts of the code that were double-locking different objects. This is... (diff)
downloadopensim-SC_OLD-832cc685138b2244529f10b54b373c34adb4a633.zip
opensim-SC_OLD-832cc685138b2244529f10b54b373c34adb4a633.tar.gz
opensim-SC_OLD-832cc685138b2244529f10b54b373c34adb4a633.tar.bz2
opensim-SC_OLD-832cc685138b2244529f10b54b373c34adb4a633.tar.xz
Merging in diva's locking fixes
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs36
1 files changed, 20 insertions, 16 deletions
diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
index 5b571c7..df9473d 100644
--- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
+++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs
@@ -122,12 +122,13 @@ namespace OpenSim.Region.Framework.Scenes
122 public bool InventoryDeQueueAndDelete() 122 public bool InventoryDeQueueAndDelete()
123 { 123 {
124 DeleteToInventoryHolder x = null; 124 DeleteToInventoryHolder x = null;
125 int left = 0;
125 126
126 try 127 try
127 { 128 {
128 lock (m_inventoryDeletes) 129 lock (m_inventoryDeletes)
129 { 130 {
130 int left = m_inventoryDeletes.Count; 131 left = m_inventoryDeletes.Count;
131 if (left > 0) 132 if (left > 0)
132 { 133 {
133 x = m_inventoryDeletes.Dequeue(); 134 x = m_inventoryDeletes.Dequeue();
@@ -136,23 +137,26 @@ namespace OpenSim.Region.Framework.Scenes
136 m_inventoryDeletes.Enqueue(x); 137 m_inventoryDeletes.Enqueue(x);
137 return true; 138 return true;
138 } 139 }
140 }
141 }
139 142
140 m_log.DebugFormat( 143 if (left > 0)
141 "[SCENE]: Sending object to user's inventory, {0} item(s) remaining.", left); 144 {
142 145 m_log.DebugFormat(
143 try 146 "[SCENE]: Sending object to user's inventory, {0} item(s) remaining.", left);
144 { 147
145 m_scene.DeleteToInventory(x.action, x.folderID, x.objectGroup, x.remoteClient); 148 try
146 if (x.permissionToDelete) 149 {
147 m_scene.DeleteSceneObject(x.objectGroup, false); 150 m_scene.DeleteToInventory(x.action, x.folderID, x.objectGroup, x.remoteClient);
148 } 151 if (x.permissionToDelete)
149 catch (Exception e) 152 m_scene.DeleteSceneObject(x.objectGroup, false);
150 { 153 }
151 m_log.DebugFormat("Exception background sending object: " + e); 154 catch (Exception e)
152 } 155 {
153 156 m_log.DebugFormat("Exception background sending object: " + e);
154 return true;
155 } 157 }
158
159 return true;
156 } 160 }
157 } 161 }
158 catch (Exception e) 162 catch (Exception e)