-
Notifications
You must be signed in to change notification settings - Fork 63
Appearance fixes #3492
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: archive/develop
Are you sure you want to change the base?
Appearance fixes #3492
Conversation
… for the avatar's own attachments
…ems collected from folder links
…arableHoldingPattern (see PR for details)
…PR for more details)
…tion, only the most recently created one should progress
…r why this was needed have been resolved in previous commits)
This is 95% the code I removed from Firestorm because it randomly caused stuck attachments when changing outfits a lot. Also unclear if the same problems have been fixed in the meantime for RLVa itself: https://jira.firestormviewer.org/browse/FIRE-16497 The actual problem revolves around the way attachments get attached/detached via simulator messages and the delay until the correc status is reflected in COF. However, this usually isn't that much of an issue unless you add several attachments really fast - which is apparently what the RLVa wardrobe does. A different solution would probably that RLVa would collect the attachment changes, calculate the changes to COF and then use the AIS function to slam the new COF contents to COF in one go instead of sending attach/detach simulator messages each time such a RLVa command is getting processed. |
Repro or it didn't happen. Sorry, but you've been banging on this drum and refusing to actually provide anyone with any reason. It just feels spiteful at this point. I provided repros and explanations of what the changes do, please have the courtesy to counter with tangible facts. These fixes also have absolutely nothing to do with RLVa; all repros involve performing actions residents do on a continuous basis. |
I already explained it can happen when you change a lot of outfits - I mean a lot of outfit changes!
Quote from the PR description:
The issues itself do of course have nothing to do with RLVa, but the RLVa wardrobe relies on adding attachments/wearables in quick succession which then suffers from a lot of the issues above. However, I already explained an alternate solution for the RLVa wardrobe which doesn't involve spamming attach object simulator messages and rather use the same method that is used when changing outfits and that uses AIS, circumventing the race conditions and COF desync that happens when quickly adding or detaching attachments! I'm not saying the existing bugs shouldn't be fixed, but I am saying these changes can result in stuck attachments. Some issues could be solved even better with a combination of server and viewer side changes, e.g. the whole process of sending a simulator message to attach an object, then wait for the attachment to arrive before the viewer itself updates COF to include the attachment which is the primary reason quickly attach/detaching attachments results in an indeterministic outcome. In fact, most of the issues in the description stem from this fact. |
Agreed that COF has always been problematic, but I would definitely challenge that any of these changes would make a practical difference to the problem of switching back and forth between outfit folders in quick succession. Also keep in mind that Firestorm has more changes than just these, it's a subset of, not the same. And we don't get to make simulator PRs so this is the best we can do 😋 . I also never said that none of the RLVa code won't change either either as it gets refactored, but the bugs above are a problem that needs addressing first, and they've been there for an eternity. |
The reason I mentioned server side changes here is because unlike trying to make things somehow work solely in the viewer to sail around the broken process itself, contributing changes might have the chance of a combined effort together with LL to eliminate the actual source of the problem, namely the old legacy way how attachments are handled outside of a full outfit change - looking at @vir-linden right now... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code cleanup is always good, thanks!
However, we still have to decide how to address the issues mentioned above.
@KittyBarnett Just checking in - any updates on the rebase work so we can keep this moving forward? |
This PR resolves a number of bugs related to avatar attachments and COF item tracking. These aren't new, but have existed in their current form dating back to at least when I filed VWR-18512.
Attached are a number of screengrabs that illustrate the various issues. It's not all of them, but they are the ones that are easy to reproduce on demand to verify that the PR actually does fix the underlying issues (retested today with tip of develop branch).
This PR is a prerequisite for the RLVa wardrobe support since it makes use of the LLAppearanceMgr/LLAttachmentMgr functionalities. @vir-linden
I've tried to split the commits across domain responsibilities, but at least some of them are interdependent in order to fix all the repros above.
Clean up unused code (n
LLViewerObject::getAttachmentItemID() sometimes returns the NULL UUID for the avatar's own attachments
LLAppearanceMgr::updateAppearanceFromCOF() doesn't properly filter items collected from folder links
Resolve race condition when removing/add attachments inside of a LLWearableHoldingPattern
Resolve issues tracking worn attachments that aren't in COF yet (see PR for more details)
If multiple LLWearableHoldingPattern instances are waiting for completion, only the most recently created one should progress
Accurately reflect the worn status of inventory items (the reasons for why this was needed have been resolved in previous commits)
Attaching a rezzed object incorrectly delays attachment link creation by 5 seconds
Repros:
Observed: the box detaches
Post fix: the box remains attached
Observed: incorrect COF (one or more of the objects are linked in COF but aren't worn)
Observed: the detach happens, but another (unexpected to an end user) attachment pops into existence
Post-fix: COF and appearance are sync'ed (the code in llattachmentmgr largely caused this issue)
Observed: the attachments come on, then the wearables, then the attachments detach
Post-fix: everything is worn as you'd expect
Observed: perfect example of why syncing attachment inside of a wearable holding pattern is wrong
Post-fix: everything is correctly worn and attached
Observed: the prim gets lots in the outfit change
Post-fix: the prim remains attached
This has the same cause as the others above but illustrates it's not just limited to single inventory wears. The worst case of this one is when you quickly switch between two outfits and end up wearing some of either and some linked in COF but unworn.