diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 6620780b2735dd9aae3bd9b773c5520cb8f0f041..e8e347c82a1a90c7705360044f4683e80c684b88 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -2143,6 +2143,8 @@ void LLAgentWearables::updateServer()
 
 void LLAgentWearables::populateMyOutfitsFolder(void)
 {	
+	llinfos << "BAP starting populate" << llendl;
+
 	LLLibraryOutfitsFetch* outfits = new LLLibraryOutfitsFetch();
 	
 	// Get the complete information on the items in the inventory and 
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index aad39854e432e037048d21192b339c6c84e23293..8a646bd626e452fd66fed3bbdc6aab6c28c712de 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1307,6 +1307,20 @@ void LLAppearanceManager::updateIsDirty()
 	}
 }
 
+void LLAppearanceManager::onFirstFullyVisible()
+{
+	// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
+	// then auto-populate outfits from the library into the My Outfits folder.
+	static bool check_populate_my_outfits = true;
+	if (check_populate_my_outfits && 
+		(LLInventoryModel::getIsFirstTimeInViewer2() 
+		 || gSavedSettings.getBOOL("MyOutfitsAutofill")))
+	{
+		gAgentWearables.populateMyOutfitsFolder();
+	}
+	check_populate_my_outfits = false;
+}
+
 //#define DUMP_CAT_VERBOSE
 
 void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 5fdff45735c37aeb4684c2ddb9ed8a30b0dba93e..28b51ee0f675b73ba32b2a12997ff3b90d1a3eea 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -113,6 +113,9 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 	// should only be necessary to do on initial login.
 	void updateIsDirty();
 
+	// Called when self avatar is first fully visible.
+	void onFirstFullyVisible();
+	
 protected:
 	LLAppearanceManager();
 	~LLAppearanceManager();
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 171b441b2b248ceadbb1ed71ee17a26f00faa532..cbcd9640dd54c3dd1557a95799d27bab5efa0365 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1891,17 +1891,6 @@ bool idle_startup()
 			}
 		}
 		
-		// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
-		// then auto-populate outfits from the library into the My Outfits folder.
-		static bool check_populate_my_outfits = true;
-		if (check_populate_my_outfits && 
-			(LLInventoryModel::getIsFirstTimeInViewer2() 
-			 || gSavedSettings.getBOOL("MyOutfitsAutofill")))
-		{
-			gAgentWearables.populateMyOutfitsFolder();
-		}
-		check_populate_my_outfits = false;
-
 		return TRUE;
 	}
 
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 9b91d5abfa08291fd5fe0bb456ca988b5c2b368a..bcf5cf3f6c3bc0f90f37b8251c7cae804dfef843 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2535,6 +2535,13 @@ void LLVOAvatar::idleUpdateLoadingEffect()
 		if (isFullyLoaded() && isSelf())
 		{
 			llwarns << "BAP self isFullyLoaded" << llendl;
+
+			static bool first_fully_visible = true;
+			if (first_fully_visible)
+			{
+				first_fully_visible = false;
+				LLAppearanceManager::instance().onFirstFullyVisible();
+			}
 		}
 		if (isFullyLoaded())
 		{