From b167507e323a2f0162aa3106ab63d8cf2a5f57ae Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Fri, 30 Nov 2007 20:16:40 +0000 Subject: Patch for mantis 0000015: Textures don't display in the object properties window From Justin Casey (IBM) --- OpenSim/Region/ClientStack/ClientView.cs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/ClientStack') diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 90002c3..86efac1 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -1031,7 +1031,16 @@ namespace OpenSim.Region.ClientStack OutPacket(kill, ThrottleOutPacketType.Task); } - public void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List items) + /// + /// Send information about the items contained in a folder to the client. + /// + /// The owner of the folder + /// The id of the folder + /// The items contained in the folder identified by folderID + /// The number of subfolders contained in the given folder. This is necessary since + /// the client is expecting inventory packets which incorporate this number into the descendents field, even though + /// we send back no details of the folders themselves (only the items). + public void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List items, int subFoldersCount) { Encoding enc = Encoding.ASCII; uint FULL_MASK_PERMISSIONS = 2147483647; @@ -1041,13 +1050,20 @@ namespace OpenSim.Region.ClientStack if (items.Count < 40) { descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count]; - descend.AgentData.Descendents = items.Count; + // In the very first packet, also include the sub folders count so that the total descendents the + // client receives matches its expectations. Subsequent inventory packets need contain only the count + // of the number of items actually in them. + descend.AgentData.Descendents = items.Count + subFoldersCount; } else { descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[40]; - descend.AgentData.Descendents = 40; + // In the very first packet, also include the sub folders count so that the total descendents the + // client receives matches its expectations. Subsequent inventory packets need contain only the count + // of the number of items actually in them. + descend.AgentData.Descendents = 40 + subFoldersCount; } + int i = 0; foreach (InventoryItemBase item in items) { -- cgit v1.1