Stop flicking IsAttachment false and then true in AttachmentsModule.UpdateAttachmentPosition() in order to avoid a hud update race condition.
Previously, setting IsAttachment to false then true was necessary to serialize the updated attachment object information. However, UpdateAttachmentPosition no longer does this update. Whilst IsAttachment is set to false there is a race condition where the update thread can wrongly send hud object updates to clients that do not own the hud, resulting in screen artifacts.0.7.3-extended
parent
1999338773
commit
da28fcd357
|
@ -408,17 +408,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
if (!Enabled)
|
if (!Enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// First we save the
|
|
||||||
// attachment point information, then we update the relative
|
|
||||||
// positioning. Then we have to mark the object as NOT an
|
|
||||||
// attachment. This is necessary in order to correctly save
|
|
||||||
// and retrieve GroupPosition information for the attachment.
|
|
||||||
// Finally, we restore the object's attachment status.
|
|
||||||
uint attachmentPoint = sog.AttachmentPoint;
|
|
||||||
sog.UpdateGroupPosition(pos);
|
sog.UpdateGroupPosition(pos);
|
||||||
sog.IsAttachment = false;
|
|
||||||
sog.AbsolutePosition = sog.RootPart.AttachedPos;
|
|
||||||
sog.AttachmentPoint = attachmentPoint;
|
|
||||||
sog.HasGroupChanged = true;
|
sog.HasGroupChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue