Bug fix in prim crossing: making it clear when the local object needs to be cloned (regions on the same instance) and when it doesn't (regions on different instances).
parent
ebf268a593
commit
a54758eef3
|
@ -204,15 +204,24 @@ namespace OpenSim.Region.CoreModules.Communications.Local
|
||||||
* Object-related communications
|
* Object-related communications
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public bool SendCreateObject(ulong regionHandle, ISceneObject sog)
|
public bool SendCreateObject(ulong regionHandle, ISceneObject sog, bool isLocalCall)
|
||||||
{
|
{
|
||||||
foreach (Scene s in m_sceneList)
|
foreach (Scene s in m_sceneList)
|
||||||
{
|
{
|
||||||
if (s.RegionInfo.RegionHandle == regionHandle)
|
if (s.RegionInfo.RegionHandle == regionHandle)
|
||||||
{
|
{
|
||||||
//m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject");
|
//m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject");
|
||||||
ISceneObject sogClone = sog.CloneForNewScene();
|
if (isLocalCall)
|
||||||
return s.IncomingCreateObject(sogClone);
|
{
|
||||||
|
// We need to make a local copy of the object
|
||||||
|
ISceneObject sogClone = sog.CloneForNewScene();
|
||||||
|
return s.IncomingCreateObject(sogClone);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Use the object as it came through the wire
|
||||||
|
return s.IncomingCreateObject(sog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -214,10 +214,10 @@ namespace OpenSim.Region.CoreModules.Communications.REST
|
||||||
* Object-related communications
|
* Object-related communications
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public bool SendCreateObject(ulong regionHandle, ISceneObject sog)
|
public bool SendCreateObject(ulong regionHandle, ISceneObject sog, bool isLocalCall)
|
||||||
{
|
{
|
||||||
// Try local first
|
// Try local first
|
||||||
if (m_localBackend.SendCreateObject(regionHandle, sog))
|
if (m_localBackend.SendCreateObject(regionHandle, sog, true))
|
||||||
{
|
{
|
||||||
//m_log.Debug("[REST COMMS]: LocalBackEnd SendCreateObject succeeded");
|
//m_log.Debug("[REST COMMS]: LocalBackEnd SendCreateObject succeeded");
|
||||||
return true;
|
return true;
|
||||||
|
@ -865,7 +865,7 @@ namespace OpenSim.Region.CoreModules.Communications.REST
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// This is the meaning of POST object
|
// This is the meaning of POST object
|
||||||
bool result = m_localBackend.SendCreateObject(regionhandle, sog);
|
bool result = m_localBackend.SendCreateObject(regionhandle, sog, false);
|
||||||
|
|
||||||
responsedata["int_response_code"] = 200;
|
responsedata["int_response_code"] = 200;
|
||||||
responsedata["str_response_string"] = result.ToString();
|
responsedata["str_response_string"] = result.ToString();
|
||||||
|
|
|
@ -70,7 +70,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
bool SendCloseAgent(ulong regionHandle, UUID id);
|
bool SendCloseAgent(ulong regionHandle, UUID id);
|
||||||
|
|
||||||
bool SendCreateObject(ulong regionHandle, ISceneObject sog);
|
bool SendCreateObject(ulong regionHandle, ISceneObject sog, bool isLocalCall);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2028,7 +2028,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// And the new channel...
|
// And the new channel...
|
||||||
if (m_interregionCommsOut != null)
|
if (m_interregionCommsOut != null)
|
||||||
successYN = m_interregionCommsOut.SendCreateObject(newRegionHandle, grp);
|
successYN = m_interregionCommsOut.SendCreateObject(newRegionHandle, grp, true);
|
||||||
|
|
||||||
if (successYN)
|
if (successYN)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue