diff options
Diffstat (limited to 'indra')
20 files changed, 90 insertions, 25 deletions
| diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index a869c74189..26ff1b5c55 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -29,7 +29,7 @@  const S32 LL_VERSION_MAJOR = 3;  const S32 LL_VERSION_MINOR = 3; -const S32 LL_VERSION_PATCH = 0; +const S32 LL_VERSION_PATCH = 1;  const S32 LL_VERSION_BUILD = 0;  const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 261553599b..c1217fc402 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1488,6 +1488,9 @@ void LLAppViewer::flushVFSIO()  bool LLAppViewer::cleanup()  { +	//ditch LLVOAvatarSelf instance +	gAgentAvatarp = NULL; +  	// workaround for DEV-35406 crash on shutdown  	LLEventPumps::instance().reset(); diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index 5a2981e749..64774d06df 100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h @@ -133,6 +133,7 @@ public:  		PASS_ALPHA,  		PASS_ALPHA_MASK,  		PASS_FULLBRIGHT_ALPHA_MASK, +		PASS_ALPHA_INVISIBLE,  		NUM_RENDER_TYPES,  	}; diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index ddb7d3ceeb..5b62dbc560 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -337,6 +337,7 @@ void LLDrawPoolAlpha::render(S32 pass)  		pushBatches(LLRenderPass::PASS_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);  		pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE); +		pushBatches(LLRenderPass::PASS_ALPHA_INVISIBLE, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);  		if(shaders)   		{ diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp index 8f47d3c5e5..64eb11fc9b 100644 --- a/indra/newview/lldriverparam.cpp +++ b/indra/newview/lldriverparam.cpp @@ -139,7 +139,7 @@ void LLDriverParamInfo::toStream(std::ostream &out)  			}  			else  			{ -				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << gAgentAvatarp << " for driver parameter " << getID() << llendl; +				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << gAgentAvatarp.get() << " for driver parameter " << getID() << llendl;  			}  			out << std::endl;  		} diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp index e2e1921cc6..ae023bc06e 100644 --- a/indra/newview/llfloaterpathfindingcharacters.cpp +++ b/indra/newview/llfloaterpathfindingcharacters.cpp @@ -123,12 +123,24 @@ void LLFloaterPathfindingCharacters::onOpen(const LLSD& pKey)  {
  	sendCharactersDataGetRequest();
  	selectNoneCharacters();
 +
 +	if (!mSelectionUpdateSlot.connected())
 +	{
 +		mSelectionUpdateSlot = LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterPathfindingCharacters::updateActionFields, this));
 +	}
 +
  	mCharactersScrollList->setCommitOnSelectionChange(true);
  }
  void LLFloaterPathfindingCharacters::onClose(bool app_quitting)
  {
  	mCharactersScrollList->setCommitOnSelectionChange(false);
 +
 +	if (mSelectionUpdateSlot.connected())
 +	{
 +		mSelectionUpdateSlot.disconnect();
 +	}
 +
  	selectNoneCharacters();
  	if (mCharacterSelection.notNull())
  	{
 @@ -227,7 +239,8 @@ LLFloaterPathfindingCharacters::LLFloaterPathfindingCharacters(const LLSD& pSeed  	mReturnBtn(NULL),
  	mDeleteBtn(NULL),
  	mTeleportBtn(NULL),
 -	mCharacterSelection()
 +	mCharacterSelection(),
 +	mSelectionUpdateSlot()
  {
  	mSelfHandle.bind(this);
  }
 @@ -570,7 +583,7 @@ void LLFloaterPathfindingCharacters::setEnableActionFields(BOOL pEnabled)  {
  	mLabelActions->setEnabled(pEnabled);
  	mShowBeaconCheckBox->setEnabled(pEnabled);
 -	mTakeBtn->setEnabled(pEnabled && tools_visible_take_object());
 +	mTakeBtn->setEnabled(pEnabled && visible_take_object());
  	mTakeCopyBtn->setEnabled(pEnabled && enable_object_take_copy());
  	mReturnBtn->setEnabled(pEnabled && enable_object_return());
  	mDeleteBtn->setEnabled(pEnabled && enable_object_delete());
 diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h index ecc605c300..c381492784 100644 --- a/indra/newview/llfloaterpathfindingcharacters.h +++ b/indra/newview/llfloaterpathfindingcharacters.h @@ -36,6 +36,8 @@  #include "llpathfindingcharacter.h"
  #include "llselectmgr.h"
 +#include <boost/signals2.hpp>
 +
  class LLSD;
  class LLTextBase;
  class LLScrollListCtrl;
 @@ -90,6 +92,7 @@ private:  	LLButton                                     *mDeleteBtn;
  	LLButton                                     *mTeleportBtn;
  	LLObjectSelectionHandle                      mCharacterSelection;
 +	boost::signals2::connection                  mSelectionUpdateSlot;
  	// Does its own instance management, so clients not allowed
  	// to allocate or destroy.
 diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 9b86ecd66a..27047b4fd9 100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp @@ -53,6 +53,7 @@  #include "llnotificationsutil.h"
  #include <boost/bind.hpp>
 +#include <boost/signals2.hpp>
  #define XUI_LINKSET_USE_NONE             0
  #define XUI_LINKSET_USE_WALKABLE         1
 @@ -212,10 +213,20 @@ void LLFloaterPathfindingLinksets::onOpen(const LLSD& pKey)  	{
  		LLPathfindingManager::getInstance()->registerAgentStateSignal(boost::bind(&LLFloaterPathfindingLinksets::onAgentStateCB, this, _1));
  	}
 +
 +	if (!mSelectionUpdateSlot.connected())
 +	{
 +		mSelectionUpdateSlot = LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterPathfindingLinksets::updateControls, this));
 +	}
  }
  void LLFloaterPathfindingLinksets::onClose(bool pAppQuitting)
  {
 +	if (mSelectionUpdateSlot.connected())
 +	{
 +		mSelectionUpdateSlot.disconnect();
 +	}
 +
  	if (mAgentStateSlot.connected())
  	{
  		mAgentStateSlot.disconnect();
 @@ -307,7 +318,8 @@ LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)  	mMessagingState(kMessagingUnknown),
  	mLinksetsListPtr(),
  	mLinksetsSelection(),
 -	mAgentStateSlot()
 +	mAgentStateSlot(),
 +	mSelectionUpdateSlot()
  {
  }
 @@ -1004,7 +1016,7 @@ void LLFloaterPathfindingLinksets::updateEnableStateOnEditFields()  	bool isEditEnabled = ((numSelectedItems > 0) && LLPathfindingManager::getInstance()->isAllowAlterPermanent());
  	mShowBeaconCheckBox->setEnabled(numSelectedItems > 0);
 -	mTakeButton->setEnabled(isEditEnabled && tools_visible_take_object());
 +	mTakeButton->setEnabled(isEditEnabled && visible_take_object());
  	mTakeCopyButton->setEnabled(isEditEnabled && enable_object_take_copy());
  	mReturnButton->setEnabled(isEditEnabled && enable_object_return());
  	mDeleteButton->setEnabled(isEditEnabled && enable_object_delete());
 diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h index 6432652568..d201ffe20b 100644 --- a/indra/newview/llfloaterpathfindinglinksets.h +++ b/indra/newview/llfloaterpathfindinglinksets.h @@ -35,6 +35,8 @@  #include "llpathfindinglinksetlist.h"
  #include "llpathfindingmanager.h"
 +#include <boost/signals2.hpp> +  class LLSD;
  class LLUICtrl;
  class LLTextBase;
 @@ -120,6 +122,7 @@ private:  	LLPathfindingLinksetListPtr              mLinksetsListPtr;
  	LLObjectSelectionHandle                  mLinksetsSelection;
  	LLPathfindingManager::agent_state_slot_t mAgentStateSlot;
 +	boost::signals2::connection              mSelectionUpdateSlot;  	// Does its own instance management, so clients not allowed
  	// to allocate or destroy.
 diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index cebe93f042..c0065a94e6 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -73,7 +73,7 @@  #include "llwearablelist.h"  // Marketplace outbox current disabled -#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU	0 +#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU	1  #define ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU 0  #define BLOCK_WORN_ITEMS_IN_OUTBOX 1 diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index a3f0a6062c..93dd82957f 100644 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -30,6 +30,7 @@  #include "llagent.h"  #include "llhttpclient.h" +#include "lltimer.h"  #include "lltrans.h"  #include "llviewercontrol.h"  #include "llviewermedia.h" @@ -115,6 +116,9 @@ namespace LLMarketplaceImport  	static U32 sImportResultStatus = 0;  	static LLSD sImportResults = LLSD::emptyMap(); +	static LLTimer slmGetTimer; +	static LLTimer slmPostTimer; +  	// Responders  	class LLImportPostResponder : public LLHTTPClient::Responder @@ -124,11 +128,15 @@ namespace LLMarketplaceImport  		void completed(U32 status, const std::string& reason, const LLSD& content)  		{ +			slmPostTimer.stop(); +  			if (gSavedSettings.getBOOL("InventoryOutboxLogging"))  			{  				llinfos << " SLM POST status: " << status << llendl;  				llinfos << " SLM POST reason: " << reason << llendl;  				llinfos << " SLM POST content: " << content.asString() << llendl; + +				llinfos << " SLM POST timer: " << slmPostTimer.getElapsedTimeF32() << llendl;  			}  			if ((status == MarketplaceErrorCodes::IMPORT_REDIRECT) || @@ -167,11 +175,15 @@ namespace LLMarketplaceImport  		void completed(U32 status, const std::string& reason, const LLSD& content)  		{ +			slmGetTimer.stop(); +  			if (gSavedSettings.getBOOL("InventoryOutboxLogging"))  			{  				llinfos << " SLM GET status: " << status << llendl;  				llinfos << " SLM GET reason: " << reason << llendl;  				llinfos << " SLM GET content: " << content.asString() << llendl; + +				llinfos << " SLM GET timer: " << slmGetTimer.getElapsedTimeF32() << llendl;  			}  			if ((status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR) || @@ -247,6 +259,7 @@ namespace LLMarketplaceImport  			llinfos << " SLM GET: " << url << llendl;  		} +		slmGetTimer.start();  		LLHTTPClient::get(url, new LLImportGetResponder(), LLViewerMedia::getHeaders());  		return true; @@ -277,6 +290,7 @@ namespace LLMarketplaceImport  			llinfos << " SLM GET: " << url << llendl;  		} +		slmGetTimer.start();  		LLHTTPClient::get(url, new LLImportGetResponder(), headers);  		return true; @@ -310,6 +324,7 @@ namespace LLMarketplaceImport  			llinfos << " SLM POST: " << url << llendl;  		} +		slmPostTimer.start();  		LLHTTPClient::post(url, LLSD(), new LLImportPostResponder(), headers);  		return true; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 219f00d47d..2d837b3df8 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2037,6 +2037,12 @@ void LLViewerWindow::shutdownGL()  	gSky.cleanup();  	stop_glerror(); +	llinfos << "Cleaning up pipeline" << llendl; +	gPipeline.cleanup(); +	stop_glerror(); + +	//MUST clean up pipeline before cleaning up wearables +	llinfos << "Cleaning up wearables" << llendl;  	LLWearableList::instance().cleanup() ;  	gTextureList.shutdown(); @@ -2047,10 +2053,6 @@ void LLViewerWindow::shutdownGL()  	LLWorldMapView::cleanupTextures(); -	llinfos << "Cleaning up pipeline" << llendl; -	gPipeline.cleanup(); -	stop_glerror(); -  	LLViewerTextureManager::cleanup() ;  	LLImageGL::cleanupClass() ; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 73390d2ea4..15786b5dd0 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -66,10 +66,11 @@  #include <boost/lexical_cast.hpp> -LLVOAvatarSelf *gAgentAvatarp = NULL; +LLPointer<LLVOAvatarSelf> gAgentAvatarp = NULL; +  BOOL isAgentAvatarValid()  { -	return (gAgentAvatarp && +	return (gAgentAvatarp.notNull() &&  			(gAgentAvatarp->getRegion() != NULL) &&  			(!gAgentAvatarp->isDead()));  } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 54dbe81993..655fb3a012 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -383,7 +383,7 @@ private:  }; -extern LLVOAvatarSelf *gAgentAvatarp; +extern LLPointer<LLVOAvatarSelf> gAgentAvatarp;  BOOL isAgentAvatarValid(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 7492a06784..03d4c51aff 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4433,10 +4433,10 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  					else  					{  						if (te->getColor().mV[3] > 0.f) -						{ +						{ //only treat as alpha in the pipeline if < 100% transparent  							drawablep->setState(LLDrawable::HAS_ALPHA); -							alpha_faces.push_back(facep);  						} +						alpha_faces.push_back(facep);  					}  				}  				else @@ -4947,7 +4947,11 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  			if (is_alpha)  			{  				// can we safely treat this as an alpha mask? -				if (facep->canRenderAsMask()) +				if (facep->getFaceColor().mV[3] <= 0.f) +				{ //100% transparent, don't render unless we're highlighting transparent +					registerFace(group, facep, LLRenderPass::PASS_ALPHA_INVISIBLE); +				} +				else if (facep->canRenderAsMask())  				{  					if (te->getFullbright() || LLPipeline::sNoAlpha)  					{ diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index d8aa0b7d5c..0f7f63061b 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -221,7 +221,7 @@ void LLWearable::createVisualParams()  		param->resetDrivenParams();  		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))  		{ -			if( !param->linkDrivenParams(boost::bind(avatar_function,gAgentAvatarp,_1 ), true)) +			if( !param->linkDrivenParams(boost::bind(avatar_function,gAgentAvatarp.get(),_1 ), true))  			{  				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;  				continue; diff --git a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml index 498a9b6ce0..6f387f4800 100644 --- a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml @@ -132,16 +132,16 @@      </panel>      <layout_stack name="import_progress_indicator" orientation="vertical" left="0" height="440" top="0" width="333" follows="all" visible="false">        <layout_panel /> -      <layout_panel height="45" auto_resize="false"> -        <layout_stack orientation="horizontal" left="0" height="45" top="0" width="333" follows="all"> +      <layout_panel height="24" auto_resize="false"> +        <layout_stack orientation="horizontal" left="0" height="24" top="0" width="333" follows="all">            <layout_panel width="0" /> -          <layout_panel width="45" auto_resize="false"> +          <layout_panel width="24" auto_resize="false">              <loading_indicator -                height="45" +                height="24"                  layout="topleft"                  left="0"                  top="0" -                width="45" /> +                width="24" />            </layout_panel>            <layout_panel width="0" />          </layout_stack> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 0543482578..bea3037616 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -153,6 +153,13 @@           function="BuyCurrency" />        </menu_item_call>        <menu_item_call +         label="Merchant Outbox..." +         name="MerchantOutbox"> +        <menu_item_call.on_click +         function="Floater.ToggleOrBringToFront" +         parameter="outbox" /> +      </menu_item_call> +      <menu_item_call             label="Account dashboard..."             name="Manage My Account">          <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index fcba937bdb..29aa6d1039 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -112,7 +112,7 @@                          bg_opaque_color="InventoryBackgroundColor"                          background_visible="true"                          background_opaque="true" -                        tool_tip="Drag and drop items to your inventory to manage and use them" +                        tool_tip="Drag and drop items to your inventory to use them"                          >                          <text  							name="inbox_inventory_placeholder" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 02a07c9f02..d6b5f3559f 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2037,7 +2037,7 @@ Returns a string with the requested data about the region  	<string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string>  	<string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>  	<string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string> -	<string name="InventoryInboxNoItems">Certain items you receive, such as premium gifts, will appear here.  You may then drag them into your inventory.</string> +	<string name="InventoryInboxNoItems">Your Marketplace purchases will appear here. You may then drag them into your inventory to use them.</string>  	<string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string>  	<string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.4</string>  	<string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string> | 
