From fe5dc0351c810ba3c13d7c0c81adf910451e2293 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Thu, 4 Feb 2010 00:32:53 +0000
Subject: [PATCH] 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(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 62197406b65..3b9b3a51d58 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2817,16 +2817,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>FirstRunThisInstall</key>
+    <key>HadFirstSuccessfulLogin</key>
     <map>
       <key>Comment</key>
-      <string>Specifies that you have not run the viewer since you installed the latest update</string>
+      <string>Specifies whether you have successfully logged in at least once before</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>FirstSelectedDisabledPopups</key>
     <map>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 2d694eefd35..2f90885df3a 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 af9e791223c..df9002facc1 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 522adc05ced..5cca87bd712 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
-- 
GitLab