diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs index 0c52e5e9ea..fd43e89d4b 100644 --- a/OpenSim/Framework/Communications/Capabilities/Caps.cs +++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs @@ -171,6 +171,8 @@ namespace OpenSim.Framework.Communications.Capabilities m_capsHandlers["UpdateScriptAgentInventory"] = m_capsHandlers["UpdateNotecardAgentInventory"]; m_capsHandlers["UpdateScriptTaskInventory"] = new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory); + m_capsHandlers["UpdateScriptAgent"] = m_capsHandlers["UpdateScriptAgentInventory"]; + m_capsHandlers["UpdateScriptTask"] = m_capsHandlers["UpdateScriptTaskInventory"]; // justincc: I've disabled the CAPS service for now to fix problems with selecting textures, and // subsequent inventory breakage, in the edit object pane (such as mantis 1085). This requires diff --git a/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs b/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs index 93ee4f86b4..1e7eb591a2 100644 --- a/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs +++ b/OpenSim/Region/Environment/Modules/Framework/EventQueueHelper.cs @@ -146,6 +146,23 @@ namespace OpenSim.Region.Environment return buildEvent("TeleportFinish", body); } + public static LLSD ScriptRunningReplyEvent(UUID objectID, UUID itemID, bool running, bool mono) + { + LLSDMap script = new LLSDMap(); + script.Add("ObjectID", LLSD.FromUUID(objectID)); + script.Add("ItemID", LLSD.FromUUID(itemID)); + script.Add("Running", LLSD.FromBoolean(running)); + script.Add("Mono", LLSD.FromBoolean(mono)); + + LLSDArray scriptArr = new LLSDArray(); + scriptArr.Add(script); + + LLSDMap body = new LLSDMap(); + body.Add("Script", scriptArr); + + return buildEvent("ScriptRunningReply", body); + } + public static LLSD KeepAliveEvent() { return buildEvent("FAKEEVENT", new LLSDMap()); diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index 1c1d42f489..d3269e1805 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs @@ -32,6 +32,7 @@ using log4net; using Nini.Config; using OpenSim.Region.Interfaces; using OpenSim.Framework; +using OpenSim.Region.Environment; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Scenes; using OpenSim.Region.ScriptEngine.Interfaces; @@ -369,8 +370,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine if (id == null) return; - controllingClient.SendScriptRunningReply(objectID, itemID, - id.Running); + IEventQueue eq = World.RequestModuleInterface(); + if (eq == null) + { + controllingClient.SendScriptRunningReply(objectID, itemID, + id.Running); + } + else + { + eq.Enqueue(EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, id.Running, true), + controllingClient.AgentId); + } } public IScriptApi GetApi(UUID itemID, string name) diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 9b78d53cdc..86dc824044 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -972,8 +972,17 @@ namespace OpenSim.Region.ScriptEngine.XEngine IScriptInstance instance = GetInstance(itemID); if (instance == null) return; - controllingClient.SendScriptRunningReply(objectID, itemID, - GetScriptState(itemID)); + IEventQueue eq = World.RequestModuleInterface(); + if (eq == null) + { + controllingClient.SendScriptRunningReply(objectID, itemID, + GetScriptState(itemID)); + } + else + { + eq.Enqueue(EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, GetScriptState(itemID), true), + controllingClient.AgentId); + } } } }