* Disabling isSelected check on object persistence backup (at least temporarily), since it appears we sometimes either don't receive or don't register deselect packets when

prims are shift copied.
* A better long term solution may be to address the problem of why we're not always seeing the deselects
0.6.0-stable
Justin Clarke Casey 2008-05-25 01:09:14 +00:00
parent bc92d72828
commit 86c46e92cd
2 changed files with 29 additions and 21 deletions

View File

@ -1090,10 +1090,6 @@ namespace OpenSim.Region.Environment.Scenes
LLUUID folderID = LLUUID.Zero;
foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData)
{
// m_log.DebugFormat(

View File

@ -402,7 +402,6 @@ namespace OpenSim.Region.Environment.Scenes
reader.Close();
sr.Close();
m_rootPart.LocalId = m_scene.PrimIDAllocate();
m_rootPart.ParentID = 0;
m_rootPart.RegionHandle = m_regionHandle;
@ -521,9 +520,13 @@ namespace OpenSim.Region.Environment.Scenes
{
if (InSceneBackup)
{
// m_log.DebugFormat(
// "[SCENE OBJECT GROUP]: Attaching object {0} to scene presistence sweep", UUID);
m_scene.EventManager.OnBackup += ProcessBackup;
}
}
public LLVector3 GroupScale()
{
LLVector3 minScale = new LLVector3(Constants.RegionSize,Constants.RegionSize,Constants.RegionSize);
@ -1073,9 +1076,14 @@ namespace OpenSim.Region.Environment.Scenes
public void ProcessBackup(IRegionDataStore datastore)
{
// don't backup while it's selected or you're asking for changes mid stream.
if (HasGroupChanged && !IsSelected)
if (HasGroupChanged)
{
m_log.InfoFormat("[SCENE]: STORING OBJECT {0}", UUID);
// FIXME: Disabling this check temporarily since it seems that in some (as yet unidentified)
// circumstances with shift copy, we never register that some prims have been deselected, even though
// they are no longer selected in the client.
// if (!IsSelected)
// {
m_log.InfoFormat("[SCENE OBJECT GROUP]: Storing object {0}", UUID);
SceneObjectGroup backup_group = Copy(OwnerID, GroupID, false);
@ -1085,6 +1093,12 @@ namespace OpenSim.Region.Environment.Scenes
backup_group.ForEachPart(delegate(SceneObjectPart part) { part.ProcessInventoryBackup(datastore); });
backup_group = null;
// }
// else
// {
// m_log.DebugFormat(
// "[SCENE OBJECT GROUP]: Did not update persistence of object {0} since it was still selected by an avatar during the backup sweep", UUID);
// }
}
// Why is storing the inventory outside of HasGroupChanged?
@ -1209,8 +1223,6 @@ namespace OpenSim.Region.Environment.Scenes
m_rootPart.ScheduleFullUpdate();
}
List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values);
foreach (SceneObjectPart part in partList)
{