diff options
Merge branch 'master' into careminster
Conflicts:
OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Estate')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | 47 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs | 6 |
2 files changed, 31 insertions, 22 deletions
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 487aa09..4750b46 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -839,26 +839,23 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
839 | 839 | ||
840 | private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) | 840 | private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) |
841 | { | 841 | { |
842 | if (TerrainUploader != null) | 842 | lock (this) |
843 | { | 843 | { |
844 | lock (TerrainUploader) | 844 | if ((TerrainUploader != null) && (XferID == TerrainUploader.XferID)) |
845 | { | 845 | { |
846 | if (XferID == TerrainUploader.XferID) | 846 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; |
847 | { | 847 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; |
848 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; | 848 | TerrainUploader.TerrainUploadDone -= HandleTerrainApplication; |
849 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; | ||
850 | TerrainUploader.TerrainUploadDone -= HandleTerrainApplication; | ||
851 | 849 | ||
852 | TerrainUploader = null; | 850 | TerrainUploader = null; |
853 | remoteClient.SendAlertMessage("Terrain Upload aborted by the client"); | 851 | remoteClient.SendAlertMessage("Terrain Upload aborted by the client"); |
854 | } | ||
855 | } | 852 | } |
856 | } | 853 | } |
857 | |||
858 | } | 854 | } |
855 | |||
859 | private void HandleTerrainApplication(string filename, byte[] terrainData, IClientAPI remoteClient) | 856 | private void HandleTerrainApplication(string filename, byte[] terrainData, IClientAPI remoteClient) |
860 | { | 857 | { |
861 | lock (TerrainUploader) | 858 | lock (this) |
862 | { | 859 | { |
863 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; | 860 | remoteClient.OnXferReceive -= TerrainUploader.XferReceive; |
864 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; | 861 | remoteClient.OnAbortXfer -= AbortTerrainXferHandler; |
@@ -917,22 +914,32 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
917 | 914 | ||
918 | private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) | 915 | private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) |
919 | { | 916 | { |
920 | if (TerrainUploader == null) | 917 | lock (this) |
921 | { | 918 | { |
922 | 919 | if (TerrainUploader == null) | |
923 | TerrainUploader = new EstateTerrainXferHandler(remote_client, clientFileName); | ||
924 | lock (TerrainUploader) | ||
925 | { | 920 | { |
921 | m_log.DebugFormat("Starting to receive uploaded terrain"); | ||
922 | TerrainUploader = new EstateTerrainXferHandler(remote_client, clientFileName); | ||
926 | remote_client.OnXferReceive += TerrainUploader.XferReceive; | 923 | remote_client.OnXferReceive += TerrainUploader.XferReceive; |
927 | remote_client.OnAbortXfer += AbortTerrainXferHandler; | 924 | remote_client.OnAbortXfer += AbortTerrainXferHandler; |
928 | TerrainUploader.TerrainUploadDone += HandleTerrainApplication; | 925 | TerrainUploader.TerrainUploadDone += HandleTerrainApplication; |
926 | TerrainUploader.RequestStartXfer(remote_client); | ||
927 | } | ||
928 | else | ||
929 | { | ||
930 | remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); | ||
929 | } | 931 | } |
930 | TerrainUploader.RequestStartXfer(remote_client); | ||
931 | |||
932 | } | 932 | } |
933 | else | 933 | } |
934 | |||
935 | public bool IsTerrainXfer(ulong xferID) | ||
936 | { | ||
937 | lock (this) | ||
934 | { | 938 | { |
935 | remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); | 939 | if (TerrainUploader == null) |
940 | return false; | ||
941 | else | ||
942 | return TerrainUploader.XferID == xferID; | ||
936 | } | 943 | } |
937 | } | 944 | } |
938 | 945 | ||
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs b/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs index b8d8b10..2d74eaf 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateTerrainXferHandler.cs | |||
@@ -78,7 +78,10 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
78 | /// <param name="data"></param> | 78 | /// <param name="data"></param> |
79 | public void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) | 79 | public void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) |
80 | { | 80 | { |
81 | if (mXferID == xferID) | 81 | if (mXferID != xferID) |
82 | return; | ||
83 | |||
84 | lock (this) | ||
82 | { | 85 | { |
83 | if (m_asset.Data.Length > 1) | 86 | if (m_asset.Data.Length > 1) |
84 | { | 87 | { |
@@ -99,7 +102,6 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
99 | if ((packetID & 0x80000000) != 0) | 102 | if ((packetID & 0x80000000) != 0) |
100 | { | 103 | { |
101 | SendCompleteMessage(remoteClient); | 104 | SendCompleteMessage(remoteClient); |
102 | |||
103 | } | 105 | } |
104 | } | 106 | } |
105 | } | 107 | } |