MAINT-6385: Ensure that VMM initialization only happens once after login and that it will only happen after the region caps have been received.

master
Rider Linden 2016-06-22 13:35:13 -07:00
parent c8b6628140
commit 0a9f25bcfb
5 changed files with 31 additions and 11 deletions

View File

@ -3895,11 +3895,17 @@ void LLAgent::handleTeleportFinished()
mIsMaturityRatingChangingDuringTeleport = false;
}
// Init SLM Marketplace connection so we know which UI should be used for the user as a merchant
// Note: Eventually, all merchant will be migrated to the new SLM system and there will be no reason to show the old UI at all.
// Note: Some regions will not support the SLM cap for a while so we need to do that check for each teleport.
// *TODO : Suppress that line from here once the whole grid migrated to SLM and move it to idle_startup() (llstartup.cpp)
check_merchant_status();
if (mRegionp)
{
if (mRegionp->capabilitiesReceived())
{
onCapabilitiesReceivedAfterTeleport();
}
else
{
mRegionp->setCapabilitiesReceivedCallback(boost::bind(&LLAgent::onCapabilitiesReceivedAfterTeleport));
}
}
}
void LLAgent::handleTeleportFailed()
@ -3931,6 +3937,14 @@ void LLAgent::handleTeleportFailed()
}
}
/*static*/
void LLAgent::onCapabilitiesReceivedAfterTeleport()
{
check_merchant_status();
}
void LLAgent::teleportRequest(
const U64& region_handle,
const LLVector3& pos_local,

View File

@ -676,6 +676,8 @@ private:
void handleTeleportFinished();
void handleTeleportFailed();
static void onCapabilitiesReceivedAfterTeleport();
//--------------------------------------------------------------------
// Teleport State
//--------------------------------------------------------------------

View File

@ -773,7 +773,9 @@ void LLMarketplaceData::getMerchantStatusCoro()
std::string url = getSLMConnectURL("/merchant");
if (url.empty())
{
LL_INFOS("Marketplace") << "No marketplace capability on Sim" << LL_ENDL;
LL_WARNS("Marketplace") << "No marketplace capability on Sim" << LL_ENDL;
setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE);
return;
}
LLSD result = httpAdapter->getAndSuspend(httpRequest, url, httpOpts);

View File

@ -397,13 +397,15 @@ void set_merchant_SLM_menu()
gToolBarView->enableCommand(command->id(), true);
}
void check_merchant_status()
void check_merchant_status(bool force)
{
if (!gSavedSettings.getBOOL("InventoryOutboxDisplayBoth"))
{
// Reset the SLM status: we actually want to check again, that's the point of calling check_merchant_status()
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED);
if (force)
{
// Reset the SLM status: we actually want to check again, that's the point of calling check_merchant_status()
LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_INITIALIZED);
}
// Hide SLM related menu item
gMenuHolder->getChild<LLView>("MarketplaceListings")->setVisible(FALSE);

View File

@ -83,7 +83,7 @@ BOOL enable_god_full(void* user_data);
BOOL enable_god_liaison(void* user_data);
BOOL enable_god_basic(void* user_data);
void set_underclothes_menu_options();
void check_merchant_status();
void check_merchant_status(bool force = false);
void exchange_callingcard(const LLUUID& dest_id);