EXT-7034 FIX add initializationagent position at later state in case initialization at earlier state failed.
reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/480/ --HG-- branch : product-enginemeow-7.2.2
parent
4ac34230c1
commit
0473ab08d8
|
|
@ -713,6 +713,7 @@ void LLNavigationBar::onNavigationButtonHeldUp(LLButton* nav_button)
|
|||
|
||||
void LLNavigationBar::handleLoginComplete()
|
||||
{
|
||||
LLTeleportHistory::getInstance()->handleLoginComplete();
|
||||
mCmbLocation->handleLoginComplete();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "llsdserialize.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llvoavatarself.h"
|
||||
#include "llslurl.h"
|
||||
#include "llviewercontrol.h" // for gSavedSettings
|
||||
#include "llviewerparcelmgr.h"
|
||||
|
|
@ -108,6 +109,16 @@ void LLTeleportHistory::onTeleportFailed()
|
|||
}
|
||||
}
|
||||
|
||||
void LLTeleportHistory::handleLoginComplete()
|
||||
{
|
||||
if( mGotInitialUpdate )
|
||||
{
|
||||
return;
|
||||
}
|
||||
updateCurrentLocation(gAgent.getPositionGlobal());
|
||||
}
|
||||
|
||||
|
||||
void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
|
||||
{
|
||||
if (mRequestedItem != -1) // teleport within the history in progress?
|
||||
|
|
@ -117,6 +128,17 @@ void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
|
|||
}
|
||||
else
|
||||
{
|
||||
//EXT-7034
|
||||
//skip initial update if agent avatar is no valid yet
|
||||
//this may happen when updateCurrentLocation called while login process
|
||||
//sometimes isAgentAvatarValid return false and in this case new_pos
|
||||
//(which actually is gAgent.getPositionGlobal() ) is invalid
|
||||
//if this position will be saved then teleport back will teleport user to wrong position
|
||||
if ( !mGotInitialUpdate && !isAgentAvatarValid() )
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
// If we're getting the initial location update
|
||||
// while we already have a (loaded) non-empty history,
|
||||
// there's no need to purge forward items or add a new item.
|
||||
|
|
|
|||
|
|
@ -136,6 +136,10 @@ public:
|
|||
* @see load()
|
||||
*/
|
||||
void dump() const;
|
||||
/**
|
||||
* Process login complete event. Basically put current location into history
|
||||
*/
|
||||
void handleLoginComplete();
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue