diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 7633b7b..6dda5aa 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -2156,16 +2156,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2156 | 2156 | ||
2157 | protected void SendBulkUpdateInventoryFolder(InventoryFolderBase folderBase) | 2157 | protected void SendBulkUpdateInventoryFolder(InventoryFolderBase folderBase) |
2158 | { | 2158 | { |
2159 | // XXX: Nasty temporary move that will be resolved shortly | ||
2160 | InventoryFolderImpl folder = (InventoryFolderImpl)folderBase; | ||
2161 | |||
2162 | // We will use the same transaction id for all the separate packets to be sent out in this update. | 2159 | // We will use the same transaction id for all the separate packets to be sent out in this update. |
2163 | UUID transactionId = UUID.Random(); | 2160 | UUID transactionId = UUID.Random(); |
2164 | 2161 | ||
2165 | List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks | 2162 | List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks |
2166 | = new List<BulkUpdateInventoryPacket.FolderDataBlock>(); | 2163 | = new List<BulkUpdateInventoryPacket.FolderDataBlock>(); |
2167 | 2164 | ||
2168 | SendBulkUpdateInventoryFolderRecursive(folder, ref folderDataBlocks, transactionId); | 2165 | SendBulkUpdateInventoryFolderRecursive(folderBase, ref folderDataBlocks, transactionId); |
2169 | 2166 | ||
2170 | if (folderDataBlocks.Count > 0) | 2167 | if (folderDataBlocks.Count > 0) |
2171 | { | 2168 | { |
@@ -2191,17 +2188,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2191 | /// <param name="folderDataBlocks"></param> | 2188 | /// <param name="folderDataBlocks"></param> |
2192 | /// <param name="transactionId"></param> | 2189 | /// <param name="transactionId"></param> |
2193 | private void SendBulkUpdateInventoryFolderRecursive( | 2190 | private void SendBulkUpdateInventoryFolderRecursive( |
2194 | InventoryFolderImpl folder, ref List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks, | 2191 | InventoryFolderBase folder, ref List<BulkUpdateInventoryPacket.FolderDataBlock> folderDataBlocks, |
2195 | UUID transactionId) | 2192 | UUID transactionId) |
2196 | { | 2193 | { |
2197 | folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder)); | 2194 | folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder)); |
2198 | 2195 | ||
2199 | const int MAX_ITEMS_PER_PACKET = 5; | 2196 | const int MAX_ITEMS_PER_PACKET = 5; |
2200 | 2197 | ||
2198 | IInventoryService invService = m_scene.RequestModuleInterface<IInventoryService>(); | ||
2201 | // If there are any items then we have to start sending them off in this packet - the next folder will have | 2199 | // If there are any items then we have to start sending them off in this packet - the next folder will have |
2202 | // to be in its own bulk update packet. Also, we can only fit 5 items in a packet (at least this was the limit | 2200 | // to be in its own bulk update packet. Also, we can only fit 5 items in a packet (at least this was the limit |
2203 | // being used on the Linden grid at 20081203). | 2201 | // being used on the Linden grid at 20081203). |
2204 | List<InventoryItemBase> items = folder.RequestListOfItems(); | 2202 | InventoryCollection contents = invService.GetFolderContent(AgentId, folder.ID); // folder.RequestListOfItems(); |
2203 | List<InventoryItemBase> items = contents.Items; | ||
2205 | while (items.Count > 0) | 2204 | while (items.Count > 0) |
2206 | { | 2205 | { |
2207 | BulkUpdateInventoryPacket bulkUpdate | 2206 | BulkUpdateInventoryPacket bulkUpdate |
@@ -2233,8 +2232,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2233 | folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder)); | 2232 | folderDataBlocks.Add(GenerateBulkUpdateFolderDataBlock(folder)); |
2234 | } | 2233 | } |
2235 | 2234 | ||
2236 | List<InventoryFolderImpl> subFolders = folder.RequestListOfFolderImpls(); | 2235 | List<InventoryFolderBase> subFolders = contents.Folders; |
2237 | foreach (InventoryFolderImpl subFolder in subFolders) | 2236 | foreach (InventoryFolderBase subFolder in subFolders) |
2238 | { | 2237 | { |
2239 | SendBulkUpdateInventoryFolderRecursive(subFolder, ref folderDataBlocks, transactionId); | 2238 | SendBulkUpdateInventoryFolderRecursive(subFolder, ref folderDataBlocks, transactionId); |
2240 | } | 2239 | } |
@@ -6609,20 +6608,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6609 | } | 6608 | } |
6610 | else // Agent | 6609 | else // Agent |
6611 | { | 6610 | { |
6612 | CachedUserInfo userInfo = ((Scene)m_scene).CommsManager.UserProfileCacheService.GetUserDetails(AgentId); | 6611 | //InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID); |
6613 | if (userInfo == null) | 6612 | IInventoryService invService = m_scene.RequestModuleInterface<IInventoryService>(); |
6614 | { | 6613 | InventoryItemBase assetRequestItem = invService.GetItem(new InventoryItemBase(itemID)); |
6615 | m_log.ErrorFormat( | ||
6616 | "[CLIENT]: Could not resolve user {0} for caps inventory update", | ||
6617 | AgentId); | ||
6618 | |||
6619 | break; | ||
6620 | } | ||
6621 | |||
6622 | if (userInfo.RootFolder == null) | ||
6623 | break; | ||
6624 | |||
6625 | InventoryItemBase assetRequestItem = userInfo.RootFolder.FindItem(itemID); | ||
6626 | if (assetRequestItem == null) | 6614 | if (assetRequestItem == null) |
6627 | { | 6615 | { |
6628 | assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID); | 6616 | assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID); |