Since multiple inventory items can refer to the same asset ID, we needed to
revert changes to old_wearable (indexed by asset ID) after saving changes
made to a wearable to a new asset ID. This prevents user confusion around
unsaved changes.
Code reviewed by vir.
Simple special-case fix for this specific issue, although I added a comment to llwearablelist.h that eventually the whole LLWearableList class will need some redesign.
Core issue is that you can have multiple itemIDs pointing to the same assetID and LLWearableList doesn't account for this possibility during lookup-wearable-by-assetID operations.
Added code to suppress local composite updates while wearables are loaded. This
makes sure that we don't update your appearance until all your wearables are
added to gAgentWearables. Hackish for 2.0, but will be inherently better for 2.1
code reviewed by vir.
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)
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.
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.
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
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
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
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.
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.
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
Apparently none of the texture pickers were invalidating the baked textures
causing selected textures to not appear on the avatar until you actually saved
the wearable. This patch forces the composites to update when you change any
texture or color (or invisibility flag).
Code reviewed by Seraph
--HG--
branch : avatar-pipeline
We were querying agent wearables (baked texture) cache before setting
mWearablesLoaded. First thing the function does is checks mWearablesLoaded.
Moving the call down to later in the function allows us to request & use
cached baked textures again.
Code reviewed by Seraph
--HG--
branch : avatar-pipeline
Re-opening issue for a second pass at it. This pass updates the code that was
intended to make all loaded wearables auto-save themselves back to wearable
version 22 (from 24). Code was not being hit, so relocated it to after wearable
had been added to llagentwearables to ensure the save succeeded.
Will be post-reviewed before push.
--HG--
branch : avatar-pipeline
Added gInventory.notifyObservers to idle callbacks so it gets triggered without explicit notifyObservers synchronization.
Added more state tracking for attachments, wearables, and links of those types, so that they're marked as changed properly.
removed ambiguous parameter "set_by_user" from many places in codebase,
renaming it to be upload_bake, which is a more accurate descriptor.
This allowed me to see several inconsistencies in how this variable was
being set - these errors were also fixed. User-visible result should be
that baked textures are not reuploaded on changing avatar sex until the
save button is pressed. primary win here is code clarity.
Code reviewed by Bigpapi.
General problem with failing to update the COF when clothing items were removed. Added hook in removeWearableFinal, which should guarantee that we're always removing clothing links when we need to.