RegionSyncModule.SendLinkObject and SendLinkObject now call BucketSyncInfoUpdate() for the linked/delinked

objects, to make sure they have updated timestamp information for synchronization purpose.
dsg
Huaiyu (Kitty) Liu 2011-02-14 11:33:57 -08:00
parent 63e35d53f7
commit 411fa60b2b
5 changed files with 29 additions and 6 deletions

View File

@ -515,6 +515,9 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
return;
}
//First, make sure the linked group has updated timestamp info for synchronization
linkedGroup.BucketSyncInfoUpdate();
OSDMap data = new OSDMap();
string sogxml = SceneObjectSerializer.ToXml2Format(linkedGroup);
data["linkedGroup"]=OSD.FromString(sogxml);
@ -573,6 +576,12 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
groupNum++;
}
//make sure the newly delinked objects have the updated timestamp information
foreach (SceneObjectGroup sog in afterDelinkGroups)
{
sog.BucketSyncInfoUpdate();
}
SymmetricSyncMessage rsm = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.DelinkObject, OSDParser.SerializeJsonString(data));
SendDelinkObjectToRelevantSyncConnectors(beforeDelinkGroups, rsm);
}

View File

@ -1601,7 +1601,6 @@ namespace OpenSim.Region.Framework.Scenes
if (m_parentScene.RegionSyncModule != null)
{
//Tell other actors to link the SceneObjectParts together as a new group.
//parentGroup.SyncInfoUpdate();
m_parentScene.RegionSyncModule.SendLinkObject(parentGroup, root, children);
}

View File

@ -4046,17 +4046,19 @@ namespace OpenSim.Region.Framework.Scenes
}
/*
public void SyncInfoUpdate()
public void BucketSyncInfoUpdate()
{
long timeStamp = DateTime.Now.Ticks;
string actorID = m_scene.GetSyncActorID();
foreach (SceneObjectPart part in Parts)
{
part.SyncInfoUpdate(timeStamp, actorID);
//part.SyncInfoUpdate(timeStamp, actorID);
part.UpdateAllBucketSyncInfo(timeStamp);
}
}
/*
public void SyncInfoUpdate(long timeStamp, string actorID)
{
foreach (SceneObjectPart part in Parts)

View File

@ -5576,7 +5576,20 @@ namespace OpenSim.Region.Framework.Scenes
}
}
public void UpdateAllBucketSyncInfo(long timeStamp)
{
if (m_syncEnabled)
{
foreach (KeyValuePair<string, BucketSyncInfo> pair in m_bucketSyncInfoList)
{
string bucketName = pair.Key;
BucketSyncInfo syncInfo= pair.Value;
syncInfo.UpdateSyncInfo(timeStamp, m_localActorID);
m_bucketSyncTainted[bucketName] = false;
}
}
}
public Scene.ObjectUpdateResult UpdateAllProperties(SceneObjectPart updatedPart)
{

View File

@ -3817,7 +3817,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
parentPrim.HasGroupChanged = true;
//parentPrim.ScheduleGroupForFullUpdate();
//SYMMETRIC SYNC
//SYMMETRIC SYNCF
if (World.RegionSyncModule != null)
{
parts.Add(rootPart);