* 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 deselects0.6.0-stable
parent
bc92d72828
commit
86c46e92cd
|
@ -1090,10 +1090,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
LLUUID folderID = LLUUID.Zero;
|
LLUUID folderID = LLUUID.Zero;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData)
|
foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
|
|
|
@ -402,7 +402,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
reader.Close();
|
reader.Close();
|
||||||
sr.Close();
|
sr.Close();
|
||||||
|
|
||||||
|
|
||||||
m_rootPart.LocalId = m_scene.PrimIDAllocate();
|
m_rootPart.LocalId = m_scene.PrimIDAllocate();
|
||||||
m_rootPart.ParentID = 0;
|
m_rootPart.ParentID = 0;
|
||||||
m_rootPart.RegionHandle = m_regionHandle;
|
m_rootPart.RegionHandle = m_regionHandle;
|
||||||
|
@ -521,9 +520,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
if (InSceneBackup)
|
if (InSceneBackup)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[SCENE OBJECT GROUP]: Attaching object {0} to scene presistence sweep", UUID);
|
||||||
|
|
||||||
m_scene.EventManager.OnBackup += ProcessBackup;
|
m_scene.EventManager.OnBackup += ProcessBackup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LLVector3 GroupScale()
|
public LLVector3 GroupScale()
|
||||||
{
|
{
|
||||||
LLVector3 minScale = new LLVector3(Constants.RegionSize,Constants.RegionSize,Constants.RegionSize);
|
LLVector3 minScale = new LLVector3(Constants.RegionSize,Constants.RegionSize,Constants.RegionSize);
|
||||||
|
@ -1073,18 +1076,29 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public void ProcessBackup(IRegionDataStore datastore)
|
public void ProcessBackup(IRegionDataStore datastore)
|
||||||
{
|
{
|
||||||
// don't backup while it's selected or you're asking for changes mid stream.
|
// 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);
|
SceneObjectGroup backup_group = Copy(OwnerID, GroupID, false);
|
||||||
|
|
||||||
datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID);
|
datastore.StoreObject(backup_group, m_scene.RegionInfo.RegionID);
|
||||||
HasGroupChanged = false;
|
HasGroupChanged = false;
|
||||||
|
|
||||||
backup_group.ForEachPart(delegate(SceneObjectPart part) { part.ProcessInventoryBackup(datastore); });
|
backup_group.ForEachPart(delegate(SceneObjectPart part) { part.ProcessInventoryBackup(datastore); });
|
||||||
|
|
||||||
backup_group = null;
|
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?
|
// Why is storing the inventory outside of HasGroupChanged?
|
||||||
|
@ -1209,8 +1223,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_rootPart.ScheduleFullUpdate();
|
m_rootPart.ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values);
|
List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values);
|
||||||
foreach (SceneObjectPart part in partList)
|
foreach (SceneObjectPart part in partList)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue