Age | Commit message (Collapse) | Author |
|
EXT-5673 : Autopopulation: Created outfits copy subfolder contents as well as immediate folder contents
EXT-5632 : Autopopulation is including subfolders even if those aren't outfits
DEV-46683 : Post-Deployment Cleanup
This is a series of changes to fix autopopulation behavior that was broken due to the new surprise web avatar deploy. That deploy surfaced a number of serious issues with the original AP code. I did not write this code and the person who did is no longer here, so I've done my best to fix those issues up.
This is a fairly comprehensive set of changes, but it's necessary given the poor state of the pre-existing code and how many problems it caused the new web avatar deploy.
This new version of the AP code will:
(1) Look for a Library->Clothing->Initial Outfits folder and use that if it exists
(2) Not create outfits out of folders that aren't complete outfits
(3) No longer string match against "More Outfits" in order to ignore outfits
(4) No longer recursively collect folder contents when creating an outfit (i.e. will only look at direct descendents)
|
|
createStandardWearables() now COF-based
|
|
|
|
|
|
|
|
|
|
We were pushing off redrawing your local texture composite
while waiting for a baked texture cache response from the server.
If this happens when your textures come in, your avatar will de-cloud
but the composite will not update, resulting in nudity.
Changed the logic so we will re-generate a local composite even if
we have a pending baked texture query (we still suppress uploading the
composite until a response is received). Verified several times that this does
fix the issue. Will update the JIRA with reliable repro.
Q verified issue is worthy of a hotfix checkin
Code has been reviewed by vir, bigpapi, and seraph
This is necessary for new user experience. Patch should be contained enough to be low-risk. Contact Nyx if any further questions.
|
|
|
|
|
|
Moved autopopulate to after avatar appearance resolves
|
|
Checker: REVERSE_INULL
Function: LLAgentWearables::setWearableOutfit(const LLDynamicArray<LLPointer<LLInventoryItem>, (int)32> &, LLDynamicArray<LLWearable *, (int)32>&, int)
File: /indra/newview/llagentwearables.cpp
|
|
Checker: REVERSE_INULL
Function: LLAgentWearables::setWearableOutfit(const LLDynamicArray<LLPointer<LLInventoryItem>, (int)32> &, LLDynamicArray<LLWearable *, (int)32>&, int)
File: /indra/newview/llagentwearables.cpp
|
|
changed logic of the save as button to copy a link from the newly created
inventory item to the current outfit folder. This makes your changes
persist on relog.
Reviewed by Vir.
|
|
Checker: NULL_RETURNS
Function: LLAgentWearables::makeNewOutfit(const std::basic_string<char, std::char_traits<char>, std::allocator<char>>&, const LLDynamicArray<int, (int)32> &, const LLDynamicArray<int, (int)32> &, int)
File: /indra/newview/llagentwearables.cpp
|
|
Checker: FORWARD_NULL
Function: LLAgentWearables::setWearableOutfit(const LLDynamicArray<LLPointer<LLInventoryItem>, (int)32> &, LLDynamicArray<LLWearable *, (int)32>&, int)
File: /indra/newview/llagentwearables.cpp
|
|
|
|
|
|
work in progress.
|
|
|
|
they can get a sense of their contents.
Also moved the My Outfits autopopulation from the library out of where it was done before (as a result of
initial wearables message) to be done in the idle login during the precaching state.
-Reviewed by Nyx
|
|
|
|
cross-wearable params are fun! Values were not being updated properly for
parameters that cross multiple wearables. Created a few functions to ensure
that these values get updated and made them called from
LLAgentWearables::wearableUpdated().
Also prevented cross-wearable params from writing back to the avatar, as they
are being driven by another wearable.
Code reviewed by Bigpapi
|
|
\'\!\' bool op.
|
|
test isExiting() first.
-Reviewed by vir
|
|
Checker: RESOURCE_LEAK
Function: LLAgentWearables::addLocalTextureObject(EWearableType, LLVOAvatarDefines::ETextureIndex, unsigned int)
File: /indra/newview/llagentwearables.cpp
|
|
|
|
Checker: RESOURCE_LEAK
Function: LLInitialWearablesFetch::processWearablesMessage()
File: /indra/newview/llagentwearables.cpp
|
|
Corrected bug where saving an outfit wouldn't update the "unsaved" marker on
the UI. Also switched the UI to use a popup dialog to request the name of
the outfit being made, as we could not convey everything we needed to on the
button alone.
Code reviewed by Vir
|
|
already imported
-Reviewed by vir
|
|
|
|
instead of folder copies).
-Reviewed by Seraph
|
|
We now show a string "(unsaved)" under the appearance panel outfit title
when the currently loaded outfit has been modified from its original state.
Tested with following conditions:
1) item added to loaded outfit
2) item removed from loaded outfit
3) item replaced in loaded outfit
Appears to work properly on login as well. Checking is a manual folder compare,
but should be fairly efficient.
XUI changes submitted by Erica
Entire diff reviewed by Vir
|
|
|
|
|
|
inventory
|
|
now on creating a new outfit we remove the old base folder link and replace it
with a link to the newly created outfit folder. Responsive UI FTW!
Code reviewed by Vir
|
|
EXT-3616 : My Outfits folders don't always auto-populate on first login
EXT-3796 : Sidepanel not picking up changes to "My Outfits" from autopopulation
EXT-3915 : Memory leak in autopopulation code
Largely rewrote the autopopulation code because it was buggy, was causing llwarns messages, and had a memory leak. My approach to this should fix everything.
|
|
-Review by seraph
|
|
|
|
Autopopulation logic is now smarter and only triggers if this is the first time you're logging into viewer2.0.
|
|
Tracking a "Is this my first time in viewer2.0?" flag and only populating My Outfits folder if it's true.
|
|
Now checking if this is the first time a user has logged into viewer2.0, via checking against COF existence.
This doesn't quite work yet because something before LLAgentWearables is also looking up COF.
|
|
--HG--
branch : product-engine
|
|
--HG--
branch : avatar-pipeline
|
|
Changed logic for getActiveInventory so that it considers InventorySP.
Removed getActiveInventory and replaced with getActiveInventoryPanel since that follows its current usage.
This currently contains a bug because the InventorySP always thinks it's open.
--HG--
branch : avatar-pipeline
|
|
The name stored in an LLWearable object is not always in sync with the
LLInventoryItem name. Since we reference these by asset id, which does not
change when you rename something (only the LLInventoryItem changes).
Fixed by refreshing the name from the LLInventoryItem every time we wear the
object. If we are already wearing the object, the wearable's name is already
explicitly updated.
Code reviewed by Bigpapi
--HG--
branch : avatar-pipeline
|
|
--HG--
branch : avatar-pipeline
|
|
--HG--
branch : avatar-pipeline
|
|
--HG--
branch : avatar-pipeline
|
|
llviewermessages.cpp
|