diff options
| author | Andrey Lihatskiy <alihatskiy@productengine.com> | 2020-07-20 22:24:10 +0300 | 
|---|---|---|
| committer | Andrey Lihatskiy <alihatskiy@productengine.com> | 2020-07-20 22:24:10 +0300 | 
| commit | 7bbf3f5f7f37330281d36ca087fe7091c2492ebe (patch) | |
| tree | c926a151f950e24207c75e9764280b58daccf017 /indra/newview/llstartup.cpp | |
| parent | bbee0658c3a7837e47d171dacfda55cac803e3ed (diff) | |
| parent | 72423372d6cd7f763a5567ad75752fa4e7131d60 (diff) | |
Merge branch 'master' into DRTVWR-501-maint
# Conflicts:
#	autobuild.xml
#	indra/newview/llimprocessing.cpp
Diffstat (limited to 'indra/newview/llstartup.cpp')
| -rw-r--r-- | indra/newview/llstartup.cpp | 72 | 
1 files changed, 46 insertions, 26 deletions
| diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 4c54d44ac5..3cd0932d9c 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -511,9 +511,9 @@ bool idle_startup()  			if(!start_messaging_system(  				   message_template_path,  				   port, -				   LLVersionInfo::getMajor(), -				   LLVersionInfo::getMinor(), -				   LLVersionInfo::getPatch(), +				   LLVersionInfo::instance().getMajor(), +				   LLVersionInfo::instance().getMinor(), +				   LLVersionInfo::instance().getPatch(),  				   FALSE,  				   std::string(),  				   responder, @@ -1537,12 +1537,14 @@ bool idle_startup()  		{  			LLStartUp::setStartupState( STATE_AGENT_SEND );  		} -		LLMessageSystem* msg = gMessageSystem; -		while (msg->checkAllMessages(gFrameCount, gServicePump))  		{ -			display_startup(); +			LockMessageChecker lmc(gMessageSystem); +			while (lmc.checkAllMessages(gFrameCount, gServicePump)) +			{ +				display_startup(); +			} +			lmc.processAcks();  		} -		msg->processAcks();  		display_startup();  		return FALSE;  	} @@ -1592,25 +1594,27 @@ bool idle_startup()  	//---------------------------------------------------------------------  	if (STATE_AGENT_WAIT == LLStartUp::getStartupState())  	{ -		LLMessageSystem* msg = gMessageSystem; -		while (msg->checkAllMessages(gFrameCount, gServicePump))  		{ -			if (gAgentMovementCompleted) -			{ -				// Sometimes we have more than one message in the -				// queue. break out of this loop and continue -				// processing. If we don't, then this could skip one -				// or more login steps. -				break; -			} -			else +			LockMessageChecker lmc(gMessageSystem); +			while (lmc.checkAllMessages(gFrameCount, gServicePump))  			{ -				LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got " -				<< msg->getMessageName() << LL_ENDL; +				if (gAgentMovementCompleted) +				{ +					// Sometimes we have more than one message in the +					// queue. break out of this loop and continue +					// processing. If we don't, then this could skip one +					// or more login steps. +					break; +				} +				else +				{ +					LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got " +										 << gMessageSystem->getMessageName() << LL_ENDL; +				} +				display_startup();  			} -			display_startup(); +			lmc.processAcks();  		} -		msg->processAcks();  		display_startup(); @@ -2300,13 +2304,29 @@ void login_callback(S32 option, void *userdata)  void show_release_notes_if_required()  {      static bool release_notes_shown = false; -    if (!release_notes_shown && (LLVersionInfo::getChannelAndVersion() != gLastRunVersion) -        && LLVersionInfo::getViewerMaturity() != LLVersionInfo::TEST_VIEWER // don't show Release Notes for the test builds +    // We happen to know that instantiating LLVersionInfo implicitly +    // instantiates the LLEventMailDrop named "relnotes", which we (might) use +    // below. If viewer release notes stop working, might be because that +    // LLEventMailDrop got moved out of LLVersionInfo and hasn't yet been +    // instantiated. +    if (!release_notes_shown && (LLVersionInfo::instance().getChannelAndVersion() != gLastRunVersion) +        && LLVersionInfo::instance().getViewerMaturity() != LLVersionInfo::TEST_VIEWER // don't show Release Notes for the test builds          && gSavedSettings.getBOOL("UpdaterShowReleaseNotes")          && !gSavedSettings.getBOOL("FirstLoginThisInstall"))      { -        LLSD info(LLAppViewer::instance()->getViewerInfo()); -        LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]); +        // Instantiate a "relnotes" listener which assumes any arriving event +        // is the release notes URL string. Since "relnotes" is an +        // LLEventMailDrop, this listener will be invoked whether or not the +        // URL has already been posted. If so, it will fire immediately; +        // otherwise it will fire whenever the URL is (later) posted. Either +        // way, it will display the release notes as soon as the URL becomes +        // available. +        LLEventPumps::instance().obtain("relnotes").listen( +            "showrelnotes", +            [](const LLSD& url){ +                LLWeb::loadURLInternal(url.asString()); +                return false; +            });          release_notes_shown = true;      }  } | 
