aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs18
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs21
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs13
3 files changed, 32 insertions, 20 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index a9d361b..3301536 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -789,23 +789,15 @@ namespace OpenSim.Region.Framework.Scenes
789 } 789 }
790 790
791 /// <summary> 791 /// <summary>
792 /// Removes an inventory folder. Although there is a packet in the Linden protocol for this, it may be 792 /// Removes an inventory folder. This packet is sent when the user
793 /// legacy and not currently used (purge folder is used to remove folders from trash instead). 793 /// right-clicks a folder that's already in trash and chooses "purge"
794 /// </summary> 794 /// </summary>
795 /// <param name="remoteClient"></param> 795 /// <param name="remoteClient"></param>
796 /// <param name="folderID"></param> 796 /// <param name="folderID"></param>
797 private void RemoveInventoryFolder(IClientAPI remoteClient, UUID folderID) 797 private void RemoveInventoryFolder(IClientAPI remoteClient, List<UUID> folderIDs)
798 { 798 {
799 // Unclear is this handler is ever called by the Linden client, but it might 799 m_log.DebugFormat("[SCENE INVENTORY]: RemoveInventoryFolders count {0}", folderIDs.Count);
800 800 InventoryService.DeleteFolders(remoteClient.AgentId, folderIDs);
801 InventoryFolderBase folder = new InventoryFolderBase(folderID);
802 folder.Owner = remoteClient.AgentId;
803 InventoryFolderBase trash = InventoryService.GetFolderForType(remoteClient.AgentId, AssetType.TrashFolder);
804 if (trash != null)
805 {
806 folder.ParentID = trash.ID;
807 InventoryService.MoveFolder(folder);
808 }
809 } 801 }
810 802
811 private SceneObjectGroup GetGroupByPrim(uint localID) 803 private SceneObjectGroup GetGroupByPrim(uint localID)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index d722e23..d3e414f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -441,9 +441,24 @@ namespace OpenSim.Region.Framework.Scenes
441 return; 441 return;
442 } 442 }
443 443
444 // We're going to send the reply async, because there may be
445 // an enormous quantity of packets -- basically the entire inventory!
446 // We don't want to block the client thread while all that is happening.
447 SendInventoryDelegate d = SendInventoryAsync;
448 d.BeginInvoke(remoteClient, folderID, ownerID, fetchFolders, fetchItems, sortOrder, SendInventoryComplete, d);
449 }
450
451 delegate void SendInventoryDelegate(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
452
453 void SendInventoryAsync(IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder)
454 {
444 SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems); 455 SendInventoryUpdate(remoteClient, new InventoryFolderBase(folderID), fetchFolders, fetchItems);
445 } 456 }
446 457
458 void SendInventoryComplete(IAsyncResult iar)
459 {
460 }
461
447 /// <summary> 462 /// <summary>
448 /// Handle the caps inventory descendents fetch. 463 /// Handle the caps inventory descendents fetch.
449 /// 464 ///
@@ -537,7 +552,7 @@ namespace OpenSim.Region.Framework.Scenes
537 552
538 public void HandleMoveInventoryFolder(IClientAPI remoteClient, UUID folderID, UUID parentID) 553 public void HandleMoveInventoryFolder(IClientAPI remoteClient, UUID folderID, UUID parentID)
539 { 554 {
540 InventoryFolderBase folder = new InventoryFolderBase(folderID); 555 InventoryFolderBase folder = new InventoryFolderBase(folderID, remoteClient.AgentId);
541 folder = InventoryService.GetFolder(folder); 556 folder = InventoryService.GetFolder(folder);
542 if (folder != null) 557 if (folder != null)
543 { 558 {
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index cb4e443..acf0375 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2143,9 +2143,14 @@ namespace OpenSim.Region.Framework.Scenes
2143 { 2143 {
2144 AgentCircuitData aCircuit = m_authenticateHandler.GetAgentCircuitData(client.CircuitCode); 2144 AgentCircuitData aCircuit = m_authenticateHandler.GetAgentCircuitData(client.CircuitCode);
2145 2145
2146 m_log.DebugFormat( 2146 m_log.Debug("[Scene] Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName);
2147 "[SCENE]: Adding new {0} agent for {1} in {2}", 2147 /*
2148 ((aCircuit.child == true) ? "child" : "root"), client.Name, RegionInfo.RegionName); 2148 string logMsg = string.Format("[SCENE]: Adding new {0} agent for {1} in {2}",
2149 ((aCircuit.child == true) ? "child" : "root"), client.Name,
2150 RegionInfo.RegionName);
2151
2152 m_log.Debug(logMsg);
2153 */
2149 2154
2150 CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); 2155 CommsManager.UserProfileCacheService.AddNewUser(client.AgentId);
2151 2156
@@ -2154,7 +2159,7 @@ namespace OpenSim.Region.Framework.Scenes
2154 // HERE!!! Do the initial attachments right here 2159 // HERE!!! Do the initial attachments right here
2155 // first agent upon login is a root agent by design. 2160 // first agent upon login is a root agent by design.
2156 // All other AddNewClient calls find aCircuit.child to be true 2161 // All other AddNewClient calls find aCircuit.child to be true
2157 if (aCircuit.child == false) 2162 if (aCircuit == null || aCircuit.child == false)
2158 { 2163 {
2159 sp.IsChildAgent = false; 2164 sp.IsChildAgent = false;
2160 sp.RezAttachments(); 2165 sp.RezAttachments();