remove some SOG references on delete to help GC
							parent
							
								
									bdab95f1d2
								
							
						
					
					
						commit
						62009ba9c0
					
				|  | @ -1083,6 +1083,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | ||||||
| 
 | 
 | ||||||
|             // Now, remove the scripts |             // Now, remove the scripts | ||||||
|             so.RemoveScriptInstances(true); |             so.RemoveScriptInstances(true); | ||||||
|  |             so.Clear(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         protected SceneObjectGroup RezSingleAttachmentFromInventoryInternal( |         protected SceneObjectGroup RezSingleAttachmentFromInventoryInternal( | ||||||
|  |  | ||||||
|  | @ -1577,6 +1577,7 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|                 m_heartbeatThread = null; |                 m_heartbeatThread = null; | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             GC.Collect(); | ||||||
|             // tell physics to finish building actor |             // tell physics to finish building actor | ||||||
|             m_sceneGraph.ProcessPhysicsPreSimulation(); |             m_sceneGraph.ProcessPhysicsPreSimulation(); | ||||||
| 
 | 
 | ||||||
|  | @ -2798,6 +2799,10 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|             if (!silent) |             if (!silent) | ||||||
|                 SendKillObject(new List<uint>() { group.LocalId }); |                 SendKillObject(new List<uint>() { group.LocalId }); | ||||||
| 
 | 
 | ||||||
|  |             // use this to mean also full delete | ||||||
|  |             if (removeScripts) | ||||||
|  |                 group.Clear(); | ||||||
|  |             partList = null; | ||||||
|             // m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);           |             // m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);           | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -764,6 +764,7 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|                 } |                 } | ||||||
|                 avsToCross.Clear(); |                 avsToCross.Clear(); | ||||||
|                 sog.RemoveScriptInstances(true); |                 sog.RemoveScriptInstances(true); | ||||||
|  |                 sog.Clear(); | ||||||
|                 return sog; |                 return sog; | ||||||
|             } |             } | ||||||
|             else // cross failed, put avas back ?? |             else // cross failed, put avas back ?? | ||||||
|  | @ -2245,7 +2246,6 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|                         {  |                         {  | ||||||
|                             part.Inventory.ProcessInventoryBackup(datastore);  |                             part.Inventory.ProcessInventoryBackup(datastore);  | ||||||
| 
 | 
 | ||||||
|                             // take the change to delete things  |  | ||||||
|                             if(part.KeyframeMotion != null) |                             if(part.KeyframeMotion != null) | ||||||
|                             { |                             { | ||||||
|                                 part.KeyframeMotion.Delete(); |                                 part.KeyframeMotion.Delete(); | ||||||
|  | @ -2253,7 +2253,7 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|                             } |                             } | ||||||
|                         }); |                         }); | ||||||
| 
 | 
 | ||||||
| 
 |                         backup_group.Clear(); | ||||||
|                         backup_group = null; |                         backup_group = null; | ||||||
|                     } |                     } | ||||||
| //                    else | //                    else | ||||||
|  | @ -4846,6 +4846,20 @@ namespace OpenSim.Region.Framework.Scenes | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // clear some references to easy cg | ||||||
|  |         public void Clear() | ||||||
|  |         { | ||||||
|  |             m_parts.Clear(); | ||||||
|  |             m_sittingAvatars.Clear(); | ||||||
|  |             m_rootPart = null; | ||||||
|  | 
 | ||||||
|  |             m_PlaySoundMasterPrim = null; | ||||||
|  |             m_PlaySoundSlavePrims.Clear(); | ||||||
|  |             m_LoopSoundMasterPrim = null; | ||||||
|  |             m_targets.Clear(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         #endregion |         #endregion | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 UbitUmarov
						UbitUmarov