From 6d44848ded11bc7f83b725909d266658fab0cb99 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 2 Feb 2010 17:14:29 -0500 Subject: For EXT-4173: New accounts sometimes appear half-naked. Fixed race condition that sometimes caused incomplete auto-populate folder to be worn --- indra/newview/llstartup.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'indra/newview/llstartup.cpp') diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 6b816f8786..4d814169cb 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1849,7 +1849,7 @@ bool idle_startup() LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } - +#if 0 // WHY 2x? BAP // We now have an inventory skeleton, so if this is a user's first // login, we can start setting up their clothing and avatar // appearance. This helps to avoid the generic "Ruth" avatar in @@ -1863,6 +1863,7 @@ bool idle_startup() // Start loading the wearables, textures, gestures LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } +#endif // wait precache-delay and for agent's avatar or a lot longer. if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) @@ -2526,6 +2527,11 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response) void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, const std::string& gender_name ) { + // Not going through the processAgentInitialWearables path, so need to set this here. + LLAppearanceManager::instance().setAttachmentInvLinkEnable(true); + // Initiate creation of COF, since we're also bypassing that. + gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); + S32 gender = 0; std::string gestures; if (gender_name == "male") @@ -2544,7 +2550,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, LLInventoryModel::cat_array_t cat_array; LLInventoryModel::item_array_t item_array; LLNameCategoryCollector has_name(outfit_folder_name); - gInventory.collectDescendentsIf(LLUUID::null, + gInventory.collectDescendentsIf(gInventory.getLibraryRootFolderID(), cat_array, item_array, LLInventoryModel::EXCLUDE_TRASH, @@ -2555,7 +2561,10 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, } else { - LLAppearanceManager::instance().wearOutfitByName(outfit_folder_name); + LLInventoryCategory* cat = cat_array.get(0); + bool do_copy = true; + bool do_append = false; + LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append); } LLAppearanceManager::instance().wearOutfitByName(gestures); LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER); -- cgit v1.3 From 221954f04203968e65325de69c73c961b5e60c56 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 3 Feb 2010 13:22:08 -0500 Subject: For EXT-4173: New accounts sometimes appear half-naked. Removed duplicate code block. --- indra/newview/llstartup.cpp | 16 ---------------- 1 file changed, 16 deletions(-) (limited to 'indra/newview/llstartup.cpp') diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 4d814169cb..f665635547 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1849,22 +1849,6 @@ bool idle_startup() LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } -#if 0 // WHY 2x? BAP - // We now have an inventory skeleton, so if this is a user's first - // login, we can start setting up their clothing and avatar - // appearance. This helps to avoid the generic "Ruth" avatar in - // the orientation island tutorial experience. JC - if (gAgent.isFirstLogin() - && !sInitialOutfit.empty() // registration set up an outfit - && !sInitialOutfitGender.empty() // and a gender - && gAgent.getAvatarObject() // can't wear clothes without object - && !gAgent.isGenderChosen() ) // nothing already loading - { - // Start loading the wearables, textures, gestures - LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); - } -#endif - // wait precache-delay and for agent's avatar or a lot longer. if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) || (timeout_frac > 3.f)) -- cgit v1.3 From fe5dc0351c810ba3c13d7c0c81adf910451e2293 Mon Sep 17 00:00:00 2001 From: Lynx Linden Date: Thu, 4 Feb 2010 00:32:53 +0000 Subject: EXT-4237: Don't show Start Up pulldown until successful login. Previously any login attempt, even a failed one, would cause the Start Up pulldown to appear. Now only a successful login will cause this to happen. Also renamed the setting FirstRunThisInstall to the more accurate HadFirstSuccessfulLogin (and inverted its logic). Reviewed by Mani. --- indra/newview/app_settings/settings.xml | 6 +++--- indra/newview/llappviewer.cpp | 2 +- indra/newview/llpanellogin.cpp | 4 ++-- indra/newview/llstartup.cpp | 5 +++-- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'indra/newview/llstartup.cpp') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 62197406b6..3b9b3a51d5 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2817,16 +2817,16 @@ Value 0 - FirstRunThisInstall + HadFirstSuccessfulLogin Comment - Specifies that you have not run the viewer since you installed the latest update + Specifies whether you have successfully logged in at least once before Persist 1 Type Boolean Value - 1 + 0 FirstSelectedDisabledPopups diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 2d694eefd3..2f90885df3 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2611,7 +2611,7 @@ void LLAppViewer::handleViewerCrash() gDebugInfo["StartupState"] = LLStartUp::getStartupStateString(); gDebugInfo["RAMInfo"]["Allocated"] = (LLSD::Integer) LLMemory::getCurrentRSS() >> 10; gDebugInfo["FirstLogin"] = (LLSD::Boolean) gAgent.isFirstLogin(); - gDebugInfo["FirstRunThisInstall"] = gSavedSettings.getBOOL("FirstRunThisInstall"); + gDebugInfo["HadFirstSuccessfulLogin"] = gSavedSettings.getBOOL("HadFirstSuccessfulLogin"); if(gLogoutInProgress) { diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index af9e791223..df9002facc 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -676,7 +676,7 @@ void LLPanelLogin::refreshLocation( bool force_visible ) // Don't show on first run after install // Otherwise ShowStartLocation defaults to true. show_start = gSavedSettings.getBOOL("ShowStartLocation") - && !gSavedSettings.getBOOL("FirstRunThisInstall"); + && gSavedSettings.getBOOL("HadFirstSuccessfulLogin"); } sInstance->childSetVisible("start_location_combo", show_start); @@ -847,7 +847,7 @@ void LLPanelLogin::loadLoginPage() oStr << "&auto_login=TRUE"; } if (gSavedSettings.getBOOL("ShowStartLocation") - && !gSavedSettings.getBOOL("FirstRunThisInstall")) + && gSavedSettings.getBOOL("HadFirstSuccessfulLogin")) { oStr << "&show_start_location=TRUE"; } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 522adc05ce..5cca87bd71 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -773,8 +773,6 @@ bool idle_startup() LLPanelLogin::giveFocus(); - gSavedSettings.setBOOL("FirstRunThisInstall", FALSE); - LLStartUp::setStartupState( STATE_LOGIN_WAIT ); // Wait for user input } else @@ -2012,6 +2010,9 @@ bool idle_startup() LLStartUp::setStartupState( STATE_STARTED ); + // Mark that we have successfully logged in at least once + gSavedSettings.setBOOL("HadFirstSuccessfulLogin", TRUE); + // Unmute audio if desired and setup volumes. // Unmute audio if desired and setup volumes. // This is a not-uncommon crash site, so surround it with -- cgit v1.3