diff options
author | Homer Horwitz | 2009-05-09 21:11:12 +0000 |
---|---|---|
committer | Homer Horwitz | 2009-05-09 21:11:12 +0000 |
commit | 1d234ca83f64b31b559ace3f63ebbba9f4903778 (patch) | |
tree | 887ba461d3ff20432806672786cbb82ff39b9aa4 /OpenSim | |
parent | * Code to make MRM debugging easier. (diff) | |
download | opensim-SC-1d234ca83f64b31b559ace3f63ebbba9f4903778.zip opensim-SC-1d234ca83f64b31b559ace3f63ebbba9f4903778.tar.gz opensim-SC-1d234ca83f64b31b559ace3f63ebbba9f4903778.tar.bz2 opensim-SC-1d234ca83f64b31b559ace3f63ebbba9f4903778.tar.xz |
Fixed handling of inventory a bit
- AssetType isn't InventoryType. Those enums contain different numbers. Use AssetType for the asset type, InventoryType for the inventory type.
- The ToString method (or ToLower) of AssetType/InventoryType doesn't necessarily return the correct LLSD string.
- Replaced several magic numbers by their corresponding enum.
- Fixed the invType for gestures and animations in the library.
This should fix Mantis #3610 and the non-terminating inventory loading
Diffstat (limited to 'OpenSim')
5 files changed, 29 insertions, 21 deletions
diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs index ae242bd..5de44b6 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs | |||
@@ -2045,7 +2045,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory | |||
2045 | // good as having type be specified in the XML. | 2045 | // good as having type be specified in the XML. |
2046 | 2046 | ||
2047 | if (ic.Item.AssetType == (int) AssetType.Unknown || | 2047 | if (ic.Item.AssetType == (int) AssetType.Unknown || |
2048 | ic.Item.InvType == (int) AssetType.Unknown) | 2048 | ic.Item.InvType == (int) InventoryType.Unknown) |
2049 | { | 2049 | { |
2050 | Rest.Log.DebugFormat("{0} Attempting to infer item type", MsgId); | 2050 | Rest.Log.DebugFormat("{0} Attempting to infer item type", MsgId); |
2051 | 2051 | ||
@@ -2078,8 +2078,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory | |||
2078 | MsgId, parts[parts.Length-1]); | 2078 | MsgId, parts[parts.Length-1]); |
2079 | if (ic.Item.AssetType == (int) AssetType.Unknown) | 2079 | if (ic.Item.AssetType == (int) AssetType.Unknown) |
2080 | ic.Item.AssetType = (int) AssetType.ImageJPEG; | 2080 | ic.Item.AssetType = (int) AssetType.ImageJPEG; |
2081 | if (ic.Item.InvType == (int) AssetType.Unknown) | 2081 | if (ic.Item.InvType == (int) InventoryType.Unknown) |
2082 | ic.Item.InvType = (int) AssetType.ImageJPEG; | 2082 | ic.Item.InvType = (int) InventoryType.Texture; |
2083 | break; | 2083 | break; |
2084 | case "jpg" : | 2084 | case "jpg" : |
2085 | case "jpeg" : | 2085 | case "jpeg" : |
@@ -2087,8 +2087,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory | |||
2087 | MsgId, parts[parts.Length - 1]); | 2087 | MsgId, parts[parts.Length - 1]); |
2088 | if (ic.Item.AssetType == (int) AssetType.Unknown) | 2088 | if (ic.Item.AssetType == (int) AssetType.Unknown) |
2089 | ic.Item.AssetType = (int) AssetType.ImageJPEG; | 2089 | ic.Item.AssetType = (int) AssetType.ImageJPEG; |
2090 | if (ic.Item.InvType == (int) AssetType.Unknown) | 2090 | if (ic.Item.InvType == (int) InventoryType.Unknown) |
2091 | ic.Item.InvType = (int) AssetType.ImageJPEG; | 2091 | ic.Item.InvType = (int) InventoryType.Texture; |
2092 | break; | 2092 | break; |
2093 | case "tga" : | 2093 | case "tga" : |
2094 | if (parts[parts.Length - 2].IndexOf("_texture") != -1) | 2094 | if (parts[parts.Length - 2].IndexOf("_texture") != -1) |
@@ -2096,14 +2096,14 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory | |||
2096 | if (ic.Item.AssetType == (int) AssetType.Unknown) | 2096 | if (ic.Item.AssetType == (int) AssetType.Unknown) |
2097 | ic.Item.AssetType = (int) AssetType.TextureTGA; | 2097 | ic.Item.AssetType = (int) AssetType.TextureTGA; |
2098 | if (ic.Item.InvType == (int) AssetType.Unknown) | 2098 | if (ic.Item.InvType == (int) AssetType.Unknown) |
2099 | ic.Item.InvType = (int) AssetType.TextureTGA; | 2099 | ic.Item.InvType = (int) InventoryType.Texture; |
2100 | } | 2100 | } |
2101 | else | 2101 | else |
2102 | { | 2102 | { |
2103 | if (ic.Item.AssetType == (int) AssetType.Unknown) | 2103 | if (ic.Item.AssetType == (int) AssetType.Unknown) |
2104 | ic.Item.AssetType = (int) AssetType.ImageTGA; | 2104 | ic.Item.AssetType = (int) AssetType.ImageTGA; |
2105 | if (ic.Item.InvType == (int) AssetType.Unknown) | 2105 | if (ic.Item.InvType == (int) InventoryType.Unknown) |
2106 | ic.Item.InvType = (int) AssetType.ImageTGA; | 2106 | ic.Item.InvType = (int) InventoryType.Snapshot; |
2107 | } | 2107 | } |
2108 | break; | 2108 | break; |
2109 | default : | 2109 | default : |
diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs index 5809455..6e005b7 100644 --- a/OpenSim/Framework/Communications/Capabilities/Caps.cs +++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs | |||
@@ -365,7 +365,7 @@ namespace OpenSim.Framework.Communications.Capabilities | |||
365 | 365 | ||
366 | public string FetchInventoryDescendentsRequest(string request, string path, string param,OSHttpRequest httpRequest, OSHttpResponse httpResponse) | 366 | public string FetchInventoryDescendentsRequest(string request, string path, string param,OSHttpRequest httpRequest, OSHttpResponse httpResponse) |
367 | { | 367 | { |
368 | m_log.Debug("[CAPS]: FetchInventoryDescendentsRequest in region: " + m_regionName + "request is "+request); | 368 | m_log.Debug("[CAPS]: FetchInventoryDescendentsRequest in region: " + m_regionName + " request is "+request); |
369 | 369 | ||
370 | // nasty temporary hack here, the linden client falsely identifies the uuid 00000000-0000-0000-0000-000000000000 as a string which breaks us | 370 | // nasty temporary hack here, the linden client falsely identifies the uuid 00000000-0000-0000-0000-000000000000 as a string which breaks us |
371 | // correctly mark it as a uuid | 371 | // correctly mark it as a uuid |
@@ -512,8 +512,16 @@ namespace OpenSim.Framework.Communications.Capabilities | |||
512 | llsdItem.item_id = invItem.ID; | 512 | llsdItem.item_id = invItem.ID; |
513 | llsdItem.name = invItem.Name; | 513 | llsdItem.name = invItem.Name; |
514 | llsdItem.parent_id = invItem.Folder; | 514 | llsdItem.parent_id = invItem.Folder; |
515 | llsdItem.type = Enum.GetName(typeof(AssetType), invItem.AssetType).ToLower(); | 515 | try |
516 | llsdItem.inv_type = Enum.GetName(typeof(InventoryType), invItem.InvType).ToLower(); | 516 | { |
517 | // TODO reevaluate after upgrade to libomv >= r2566. Probably should use UtilsConversions. | ||
518 | llsdItem.type = TaskInventoryItem.Types[invItem.AssetType]; | ||
519 | llsdItem.inv_type = TaskInventoryItem.InvTypes[invItem.InvType]; | ||
520 | } | ||
521 | catch (Exception e) | ||
522 | { | ||
523 | m_log.Error("[CAPS]: Problem setting asset/inventory type while converting inventory item " + invItem.Name + " to LLSD:", e); | ||
524 | } | ||
517 | llsdItem.permissions = new LLSDPermissions(); | 525 | llsdItem.permissions = new LLSDPermissions(); |
518 | llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid; | 526 | llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid; |
519 | llsdItem.permissions.base_mask = (int)invItem.CurrentPermissions; | 527 | llsdItem.permissions.base_mask = (int)invItem.CurrentPermissions; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 88416d3..1dcdc06 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -490,7 +490,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
490 | 490 | ||
491 | if (Permissions.PropagatePermissions()) | 491 | if (Permissions.PropagatePermissions()) |
492 | { | 492 | { |
493 | if (item.InvType == 6) | 493 | if (item.InvType == (int)InventoryType.Object) |
494 | { | 494 | { |
495 | itemCopy.BasePermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer); | 495 | itemCopy.BasePermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer); |
496 | itemCopy.BasePermissions |= (item.CurrentPermissions & 7) << 13; | 496 | itemCopy.BasePermissions |= (item.CurrentPermissions & 7) << 13; |
@@ -899,7 +899,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
899 | TryGetAvatar(remoteClient.AgentId, out presence); | 899 | TryGetAvatar(remoteClient.AgentId, out presence); |
900 | byte[] data = null; | 900 | byte[] data = null; |
901 | 901 | ||
902 | if (invType == 3 && presence != null) // OpenMetaverse.asset.assettype.landmark = 3 - needs to be turned into an enum | 902 | if (invType == (sbyte)InventoryType.Landmark && presence != null) |
903 | { | 903 | { |
904 | Vector3 pos = presence.AbsolutePosition; | 904 | Vector3 pos = presence.AbsolutePosition; |
905 | string strdata = String.Format( | 905 | string strdata = String.Format( |
@@ -1098,7 +1098,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1098 | 1098 | ||
1099 | if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) | 1099 | if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) |
1100 | { | 1100 | { |
1101 | if (taskItem.InvType == 6) | 1101 | if (taskItem.InvType == (int)InventoryType.Object) |
1102 | agentItem.BasePermissions = taskItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13); | 1102 | agentItem.BasePermissions = taskItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13); |
1103 | else | 1103 | else |
1104 | agentItem.BasePermissions = taskItem.BasePermissions; | 1104 | agentItem.BasePermissions = taskItem.BasePermissions; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 6bf1654..d03fec2 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -776,7 +776,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
776 | 776 | ||
777 | foreach (TaskInventoryItem item in m_items.Values) | 777 | foreach (TaskInventoryItem item in m_items.Values) |
778 | { | 778 | { |
779 | if (item.InvType != 6) | 779 | if (item.InvType != (int)InventoryType.Object) |
780 | { | 780 | { |
781 | if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0) | 781 | if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0) |
782 | mask &= ~((uint)PermissionMask.Copy >> 13); | 782 | mask &= ~((uint)PermissionMask.Copy >> 13); |
@@ -809,7 +809,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
809 | { | 809 | { |
810 | foreach (TaskInventoryItem item in m_items.Values) | 810 | foreach (TaskInventoryItem item in m_items.Values) |
811 | { | 811 | { |
812 | if (item.InvType == 6 && (item.CurrentPermissions & 7) != 0) | 812 | if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) |
813 | { | 813 | { |
814 | if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) | 814 | if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) |
815 | item.CurrentPermissions &= ~(uint)PermissionMask.Copy; | 815 | item.CurrentPermissions &= ~(uint)PermissionMask.Copy; |
@@ -840,7 +840,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
840 | { | 840 | { |
841 | foreach (TaskInventoryItem item in m_items.Values) | 841 | foreach (TaskInventoryItem item in m_items.Values) |
842 | { | 842 | { |
843 | if (item.InvType == 10) | 843 | if (item.InvType == (int)InventoryType.LSL) |
844 | { | 844 | { |
845 | return true; | 845 | return true; |
846 | } | 846 | } |
@@ -866,7 +866,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
866 | 866 | ||
867 | foreach (TaskInventoryItem item in m_items.Values) | 867 | foreach (TaskInventoryItem item in m_items.Values) |
868 | { | 868 | { |
869 | if (item.InvType == 10) | 869 | if (item.InvType == (int)InventoryType.LSL) |
870 | { | 870 | { |
871 | foreach (IScriptModule e in engines) | 871 | foreach (IScriptModule e in engines) |
872 | { | 872 | { |
@@ -890,7 +890,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
890 | 890 | ||
891 | foreach (TaskInventoryItem item in m_items.Values) | 891 | foreach (TaskInventoryItem item in m_items.Values) |
892 | { | 892 | { |
893 | if (item.InvType == 10) | 893 | if (item.InvType == (int)InventoryType.LSL) |
894 | { | 894 | { |
895 | foreach (IScriptModule e in engines) | 895 | foreach (IScriptModule e in engines) |
896 | { | 896 | { |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 1cd25e7..e5c59aa 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -1351,8 +1351,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1351 | taskItem.CreationDate = (uint)Util.UnixTimeSinceEpoch(); | 1351 | taskItem.CreationDate = (uint)Util.UnixTimeSinceEpoch(); |
1352 | taskItem.Name = asset.Name; | 1352 | taskItem.Name = asset.Name; |
1353 | taskItem.Description = asset.Description; | 1353 | taskItem.Description = asset.Description; |
1354 | taskItem.Type = 7; | 1354 | taskItem.Type = (int)AssetType.Notecard; |
1355 | taskItem.InvType = 7; | 1355 | taskItem.InvType = (int)InventoryType.Notecard; |
1356 | taskItem.OwnerID = m_host.OwnerID; | 1356 | taskItem.OwnerID = m_host.OwnerID; |
1357 | taskItem.CreatorID = m_host.OwnerID; | 1357 | taskItem.CreatorID = m_host.OwnerID; |
1358 | taskItem.BasePermissions = (uint)PermissionMask.All; | 1358 | taskItem.BasePermissions = (uint)PermissionMask.All; |