From 8c99b37ac0480addcf14cb8643cba85bebe822ad Mon Sep 17 00:00:00 2001 From: "Nyx (Neal Orman)" Date: Tue, 17 Nov 2009 16:22:12 -0500 Subject: EXT-2535 wearables saved in 2.0 don't load in 1.23 Incrementing wearable version number was a bad thing here - we want to keep all wearables reporting as version 22 until we make a breaking change. Reverted the version number and put in a hack to force any version 24 wearables to be re-saved as version 22. The hack can be removed before release, as it should only affect internal testers. Code reviewed by Seraph --HG-- branch : avatar-pipeline --- indra/newview/character/avatar_lad.xml | 2 +- indra/newview/llwearable.cpp | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 10c197d09e..d7182dfaab 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -1,6 +1,6 @@ + version="1.0" wearable_definition_version="22"> LLWearable::sCurrentDefinitionVersion ) + + // Temoprary hack to allow wearables with definition version 24 to still load. + // This should only affect lindens and NDA'd testers who have saved wearables in 2.0 + // the extra check for version == 24 can be removed before release, once internal testers + // have loaded these wearables again. See hack pt 2 at bottom of function to ensure that + // these wearables get re-saved with version definition 22. + if( mDefinitionVersion > LLWearable::sCurrentDefinitionVersion && mDefinitionVersion != 24 ) { llwarns << "Wearable asset has newer version (" << mDefinitionVersion << ") than XML (" << LLWearable::sCurrentDefinitionVersion << ")" << llendl; return FALSE; @@ -414,6 +420,18 @@ BOOL LLWearable::importFile( LLFILE* file ) // copy all saved param values to working params revertValues(); + // Hack pt 2. If the wearable we just loaded has definition version 24, + // then force a re-save of this wearable after slamming the version number to 22. + // This number was incorrectly incremented for internal builds before release, and + // this fix will ensure that the affected wearables are re-saved with the right version number. + // the versions themselves are compatible. This code can be removed before release. + if( mDefinitionVersion == 24 ) + { + mDefinitionVersion = 22; + U32 index = gAgentWearables.getWearableIndex(this); + gAgentWearables.saveWearable(mType,index,TRUE); + } + return TRUE; } -- cgit v1.2.3