diff options
-rw-r--r-- | indra/newview/llagent.cpp | 30 | ||||
-rw-r--r-- | indra/newview/llagent.h | 4 | ||||
-rw-r--r-- | indra/newview/llchathistory.cpp | 1 |
3 files changed, 14 insertions, 21 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index f31135ad4c..3c50493d79 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -387,6 +387,7 @@ LLAgent::LLAgent() : mTeleportFinishedSlot(), mTeleportFailedSlot(), mIsMaturityRatingChangingDuringTeleport(false), + mTPNeedsNeabyChatSeparator(false), mMaturityRatingChange(0U), mIsDoSendMaturityPreferenceToServer(false), mMaturityPreferenceRequestId(0U), @@ -519,10 +520,6 @@ void LLAgent::cleanup() { mTeleportFailedSlot.disconnect(); } - if (mParcelMgrConnection.connected()) - { - mParcelMgrConnection.disconnect(); - } } //----------------------------------------------------------------------------- @@ -3938,10 +3935,7 @@ void LLAgent::clearTeleportRequest() LLVoiceClient::getInstance()->setHidden(FALSE); } mTeleportRequest.reset(); - if (mParcelMgrConnection.connected()) - { - mParcelMgrConnection.disconnect(); - } + mTPNeedsNeabyChatSeparator = false; } void LLAgent::setMaturityRatingChangeDuringTeleport(U8 pMaturityRatingChange) @@ -3953,7 +3947,7 @@ void LLAgent::setMaturityRatingChangeDuringTeleport(U8 pMaturityRatingChange) void LLAgent::sheduleTeleportIM() { // is supposed to be called during teleport so we are still waiting for parcel - mParcelMgrConnection = addParcelChangedCallback(onParcelReadyAfterTeleport); + mTPNeedsNeabyChatSeparator = true; } bool LLAgent::hasPendingTeleportRequest() @@ -4003,6 +3997,12 @@ void LLAgent::startTeleportRequest() void LLAgent::handleTeleportFinished() { LL_INFOS("Teleport") << "Agent handling teleport finished." << LL_ENDL; + if (mTPNeedsNeabyChatSeparator) + { + // parcel is ready at this point + addTPNearbyChatSeparator(); + mTPNeedsNeabyChatSeparator = false; + } clearTeleportRequest(); mTeleportCanceled.reset(); if (mIsMaturityRatingChangingDuringTeleport) @@ -4066,14 +4066,11 @@ void LLAgent::handleTeleportFailed() mIsMaturityRatingChangingDuringTeleport = false; } - if (mParcelMgrConnection.connected()) - { - mParcelMgrConnection.disconnect(); - } + mTPNeedsNeabyChatSeparator = false; } /*static*/ -void LLAgent::onParcelReadyAfterTeleport() +void LLAgent::addTPNearbyChatSeparator() { LLViewerRegion* agent_region = gAgent.getRegion(); LLParcel* agent_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); @@ -4106,11 +4103,6 @@ void LLAgent::onParcelReadyAfterTeleport() args["do_not_log"] = TRUE; nearby_chat->addMessage(chat, true, args); } - - if (gAgent.mParcelMgrConnection.connected()) - { - gAgent.mParcelMgrConnection.disconnect(); - } } /*static*/ diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 8f8c2f6007..a792d3e11f 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -668,9 +668,9 @@ private: LLTeleportRequestPtr mTeleportCanceled; boost::signals2::connection mTeleportFinishedSlot; boost::signals2::connection mTeleportFailedSlot; - boost::signals2::connection mParcelMgrConnection; bool mIsMaturityRatingChangingDuringTeleport; + bool mTPNeedsNeabyChatSeparator; U8 mMaturityRatingChange; bool hasPendingTeleportRequest(); @@ -687,7 +687,7 @@ private: void handleTeleportFinished(); void handleTeleportFailed(); - static void onParcelReadyAfterTeleport(); + static void addTPNearbyChatSeparator(); static void onCapabilitiesReceivedAfterTeleport(); //-------------------------------------------------------------------- diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 2bb68dbbbe..c110e0d815 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -739,6 +739,7 @@ public: break; case CHAT_SOURCE_SYSTEM: icon->setValue(LLSD("SL_Logo")); + break; case CHAT_SOURCE_TELEPORT: icon->setValue(LLSD("Command_Destinations_Icon")); break; |