diff options
20 files changed, 125 insertions, 36 deletions
| diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 673631f99a..28125ccaaf 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -40,6 +40,8 @@  #include "llfocusmgr.h"  #include "lllocalcliprect.h" +#include "lltrans.h" +  #include "boost/bind.hpp"  static const S32 DRAGGER_BAR_MARGIN = 4; @@ -72,6 +74,7 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)  {  	initNoTabsWidget(params.no_matched_tabs_text); +	mNoVisibleTabsOrigString = LLTrans::getString(params.no_visible_tabs_text.initial_value().asString());  	mSingleExpansion = params.single_expansion;  	if(mFitParent && !mSingleExpansion)  	{ @@ -386,7 +389,7 @@ void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)  {  	LLTextBox::Params tp = tb_params;  	tp.rect(getLocalRect()); -	mNoMatchedTabsOrigString = tp.initial_value().asString(); +	mNoMatchedTabsOrigString = LLTrans::getString(tp.initial_value().asString());  	mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);  } diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 1c763453dc..ccdb109d95 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 21 +version 22  // NOTE: This is mostly identical to featuretable_mac.txt with a few differences  // Should be combined into one table @@ -59,6 +59,7 @@ RenderTextureMemoryMultiple		1	1.0  RenderShaderLightingMaxLevel	1	3  SkyUseClassicClouds			1	1  WatchdogDisabled				1	1 +RenderUseStreamVBO			1	1  // @@ -431,6 +432,10 @@ list ATIOldDriver  RenderAvatarVP				0	0  RenderAvatarCloth			0	0 +// ATI cards generally perform better when not using VBOs for streaming data + +list ATI +RenderUseStreamVBO			1	0  /// Tweaked NVIDIA diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index c70bbb985f..1ef9e34f87 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2065,6 +2065,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)  	// Menus should not remain open on switching to mouselook...  	LLMenuGL::sMenuContainer->hideMenus(); +	LLUI::clearPopups();  	// unpause avatar animation  	gAgent.unpauseAnimation(); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index f8cff42412..862c68ecda 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -403,7 +403,10 @@ void LLWearableHoldingPattern::checkMissingWearables()  	for (S32 type = 0; type < LLWearableType::WT_COUNT; ++type)  	{ -		llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl; +		if (requested_by_type[type] > found_by_type[type]) +		{ +			llwarns << "got fewer wearables than requested, type " << type << ": requested " << requested_by_type[type] << ", found " << found_by_type[type] << llendl; +		}  		if (found_by_type[type] > 0)  			continue;  		if ( @@ -670,12 +673,15 @@ bool LLWearableHoldingPattern::pollMissingWearables()  	bool timed_out = isTimedOut();  	bool missing_completed = isMissingCompleted();  	bool done = timed_out || missing_completed; -	 -	llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() -			<< " links " << mTypesToLink.size() -			<< " wearables, timed out " << timed_out -			<< " elapsed " << mWaitTime.getElapsedTimeF32() -			<< " done " << done << llendl; + +	if (!done) +	{ +		llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() +				<< " links " << mTypesToLink.size() +				<< " wearables, timed out " << timed_out +				<< " elapsed " << mWaitTime.getElapsedTimeF32() +				<< " done " << done << llendl; +	}  	if (done)  	{ @@ -795,12 +801,8 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)  	}  	mResolved += 1;  // just counting callbacks, not successes. -	llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << getFoundList().size() << llendl; -	if (wearable) -	{ -		llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl; -	} -	else +	llinfos << "resolved " << mResolved << "/" << getFoundList().size() << llendl; +	if (!wearable)  	{  		llwarns << "no wearable found" << llendl;  	} @@ -830,10 +832,14 @@ void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)  		LLFoundData& data = *iter;  		if(wearable->getAssetID() == data.mAssetID)  		{ -			data.mWearable = wearable;  			// Failing this means inventory or asset server are corrupted in a way we don't handle. -			llassert((data.mWearableType < LLWearableType::WT_COUNT) && (wearable->getType() == data.mWearableType)); -			break; +			if ((data.mWearableType >= LLWearableType::WT_COUNT) || (wearable->getType() != data.mWearableType)) +			{ +				llwarns << "recovered wearable but type invalid. inventory wearable type: " << data.mWearableType << " asset wearable type: " << wearable->getType() << llendl; +				break; +			} + +			data.mWearable = wearable;  		}  	}  } @@ -1635,7 +1641,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)  	// the saved outfit stored as a folder link  	updateIsDirty(); -	dumpCat(getCOF(),"COF, start"); +	//dumpCat(getCOF(),"COF, start");  	bool follow_folder_links = true;  	LLUUID current_outfit_id = getCOF(); @@ -1718,7 +1724,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)  	{  		LLFoundData& found = *it; -		llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; +		lldebugs << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;  		// Fetch the wearables about to be worn.  		LLWearableList::instance().getAsset(found.mAssetID, @@ -2489,6 +2495,19 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove)  		}  	default: break;  	} + +	// *HACK: Force to remove garbage from COF. +	// Unworn links or objects can't be processed by existed removing functionality +	// since it is not designed for such cases. As example attachment object can't be removed +	// since sever don't sends message _PREHASH_KillObject in that case. +	// Also we can't check is link was successfully removed from COF since in case +	// deleting attachment link removing performs asynchronously in process_kill_object callback. +	LLViewerInventoryItem* item =  gInventory.getItem(id_to_remove); +	if (item != NULL) +	{ +		gInventory.purgeObject(id_to_remove); +		gInventory.notifyObservers(); +	}  }  bool LLAppearanceMgr::moveWearable(LLViewerInventoryItem* item, bool closer_to_body) diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index d83706de52..8fdbdd08bf 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -80,7 +80,7 @@ protected:  		// Set proper label for the "Create new <WEARABLE_TYPE>" menu item.  		LLStringUtil::format_map_t args; -		args["[WEARABLE_TYPE]"] = LLWearableType::getTypeDefaultNewName(w_type); +		args["[WEARABLE_TYPE]"] = LLTrans::getString(LLWearableType::getTypeDefaultNewName(w_type));  		std::string new_label = LLTrans::getString("CreateNewWearable", args);  		menu_item->setLabel(new_label);  	} diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 70a7bf644b..7f027d299b 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -1792,6 +1792,7 @@ void LLPanelClassifiedEdit::onOpen(const LLSD& key)  	enableVerbs(is_new);  	enableEditing(is_new); +	showEditing(!is_new);  	resetDirty();  	setInfoLoaded(false);  } @@ -2011,6 +2012,12 @@ void LLPanelClassifiedEdit::enableEditing(bool enable)  	childSetEnabled("auto_renew", enable);  } +void LLPanelClassifiedEdit::showEditing(bool show) +{ +	childSetVisible("price_for_listing_label", show); +	childSetVisible("price_for_listing", show); +} +  std::string LLPanelClassifiedEdit::makeClassifiedName()  {  	std::string name; diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 1157649a16..eaf652ca06 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -416,6 +416,8 @@ protected:  	void enableEditing(bool enable); +	void showEditing(bool show); +  	std::string makeClassifiedName();  	void setPriceForListing(S32 price); diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 26f0b3f48f..14f05bdb17 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -963,8 +963,7 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)  		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(update_color_swatch_ctrl, this, _1, _2));  		for_each_picker_ctrl_entry <LLTextureCtrl>     (panel, type, boost::bind(update_texture_ctrl, this, _1, _2));  	} - -	if (!is_modifiable || !is_copyable) +	else  	{  		// Disable controls  		for_each_picker_ctrl_entry <LLColorSwatchCtrl> (panel, type, boost::bind(set_enabled_color_swatch_ctrl, false, _1, _2)); diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index c397dd5092..2df1982e03 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -196,7 +196,7 @@ private:  			LLMenuItemCallGL::Params p;  			p.name = type_name; -			p.label = LLWearableType::getTypeDefaultNewName(type); +			p.label = LLTrans::getString(LLWearableType::getTypeDefaultNewName(type));  			p.on_click.function_name = "Wearable.Create";  			p.on_click.parameter = LLSD(type_name); diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index ef89c07c60..40c99edecd 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -297,6 +297,12 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast)  	{  		mStoredToastList.erase(it);  	} + +	// if destroyed toast is hovered - reset hovered +	if (mHoveredToast == toast) +	{ +		mHoveredToast = NULL; +	}  } diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 3430f265ae..1ff4d6db9e 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -625,7 +625,15 @@ bool LLViewerInventoryCategory::fetch()  		// AIS folks are aware of the issue and have a fix in process.  		// see ticket for details. -		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents"); +		std::string url; +		if (gAgent.getRegion()) +		{ +			url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents"); +		} +		else +		{ +			llwarns << "agent region is null" << llendl; +		}  		if (!url.empty()) //Capability found.  Build up LLSD and use it.  		{  			LLInventoryModelBackgroundFetch::instance().start(mUUID, false);			 diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index eb5b6c6618..5431aec07c 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -313,7 +313,10 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,  	//  	//  Load Species-Specific data   	// +	static const S32 MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 32 ; //frames.  	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); +	mTreeImagep->setMaxVirtualSizeResetInterval(MAX_TREE_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL); //allow to wait for at most 16 frames to reset virtual size. +  	mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;  	mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;  	mLeafScale = sSpeciesTable[mSpecies]->mLeafScale; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 14688e4506..7d0f763bd1 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -2253,7 +2253,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)  			}  		}  	} -	llpushcallstacks ;  	{  		LLFastTimer ftm(FTM_STATESORT_DRAWABLE);  		for (LLCullResult::drawable_list_t::iterator iter = sCull->beginVisibleList(); @@ -2266,15 +2265,12 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)  			}  		}  	} -	llpushcallstacks ;	  	{  		LLFastTimer ftm(FTM_CLIENT_COPY);  		LLVertexBuffer::clientCopy();  	} -	llpushcallstacks ; -	postSort(camera); -	llpushcallstacks ; +	postSort(camera);	  }  void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera) @@ -2544,6 +2540,7 @@ void LLPipeline::postSort(LLCamera& camera)  	assertInitialized(); +	llpushcallstacks ;  	//rebuild drawable geometry  	for (LLCullResult::sg_list_t::iterator i = sCull->beginDrawableGroups(); i != sCull->endDrawableGroups(); ++i)  	{ @@ -2554,7 +2551,7 @@ void LLPipeline::postSort(LLCamera& camera)  			group->rebuildGeom();  		}  	} - +	llpushcallstacks ;  	//rebuild groups  	sCull->assertDrawMapsEmpty(); @@ -2574,6 +2571,7 @@ void LLPipeline::postSort(LLCamera& camera)  	rebuildPriorityGroups(); +	llpushcallstacks ;  	const S32 bin_count = 1024*8; @@ -2675,7 +2673,7 @@ void LLPipeline::postSort(LLCamera& camera)  		std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());  	} -	 +	llpushcallstacks ;  	// only render if the flag is set. The flag is only set if we are in edit mode or the toggle is set in the menus  	if (LLFloaterReg::instanceVisible("beacons") && !sShadowRender)  	{ @@ -2723,7 +2721,7 @@ void LLPipeline::postSort(LLCamera& camera)  			forAllVisibleDrawables(renderSoundHighlights);  		}  	} - +	llpushcallstacks ;  	// If managing your telehub, draw beacons at telehub and currently selected spawnpoint.  	if (LLFloaterTelehub::renderBeacons())  	{ @@ -2753,6 +2751,7 @@ void LLPipeline::postSort(LLCamera& camera)  	}  	//LLSpatialGroup::sNoDelete = FALSE; +	llpushcallstacks ;  } diff --git a/indra/newview/skins/default/textures/icons/Shop.png b/indra/newview/skins/default/textures/icons/Shop.pngBinary files differ index 9d091fed44..81c13eeabd 100644 --- a/indra/newview/skins/default/textures/icons/Shop.png +++ b/indra/newview/skins/default/textures/icons/Shop.png diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml index 5cf31791ba..7fced273a7 100644 --- a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml +++ b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml @@ -1,6 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <context_menu name="COF Clothing">  	<menu_item_call label="Ausziehen" name="take_off"/> +	<menu_item_call label="Ersetzen" name="replace"/>  	<menu_item_call label="Eine Kategorie nach oben" name="move_up"/>  	<menu_item_call label="Eine Kategorie nach unten" name="move_down"/>  	<menu_item_call label="Bearbeiten" name="edit"/> diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml index f25c170f33..6ce9ed6e77 100644 --- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml @@ -25,10 +25,11 @@ Remember, Classified fees are non-refundable.      <spinner       decimal_digits="0"       follows="left|top" +     font="SansSerif"       halign="left"       height="23"       increment="1" -     label_width="45" +     label_width="50"       label="Price: L$ "       v_pad="10"       layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index cbdd548577..9408f193fd 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -261,6 +261,34 @@           name="auto_renew"           top_pad="15"           width="250" /> +        <text +         follows="left|top" +         height="10" +         layout="topleft" +         left="10" +         name="price_for_listing_label" +         text_color="white" +         top_pad="15" +         value="Price for listing:" +         width="250" /> +        <spinner +         decimal_digits="0" +         follows="left|top" +         halign="left" +         height="23" +         increment="1" +         label_width="20" +         label="L$" +         v_pad="10" +         layout="topleft" +         left="10" +         value="50" +         min_val="50" +         max_val="99999" +         name="price_for_listing" +         top_pad="5" +         tool_tip="Price for listing." +         width="105" />       </panel>      </scroll_container>      <panel diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index adc38b966c..cf174da2f0 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -406,6 +406,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap           left_pad="1"           name="shop_btn_1"           top="1" +         tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"           width="31" />      </panel> @@ -480,6 +481,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap           left_pad="1"           name="shop_btn_2"           top="1" +         tool_tip="Visit the SL Marketplace. You can also select something you are wearing, then click here to see more things like it"           width="31" />      </panel> diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index 27e23440df..b43aa0a824 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -14,9 +14,9 @@       background_visible="true"       bg_alpha_color="DkGray2"       bg_opaque_color="DkGray2" -     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." +     no_matched_tabs_text.value="NoOutfitsTabsMatched"       no_matched_tabs_text.v_pad="10" -     no_visible_tabs_text.value="..." +     no_visible_tabs_text.value="NoOutfits"       follows="all"       height="400"       layout="topleft" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 1e8d0d2fe5..e43c61b202 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2172,12 +2172,17 @@ Clears (deletes) the media and all params from the given face.  	<string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string>  	<!-- panel contents --> +	<string name="PanelContentsTooltip">Content of object</string>  	<string name="PanelContentsNewScript">New Script</string>  	<string name="PanelContentsTooltip">Content of object</string>    <!-- panel preferences general -->    <string name="BusyModeResponseDefault">The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed.  Your message will still be shown in their IM panel for later viewing.</string> +	<!-- Outfits Panel --> +	<string name="NoOutfits">You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]</string> +	<string name="NoOutfitsTabsMatched">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string> +  	<!-- Mute -->  	<string name="MuteByName">(By name)</string>  	<string name="MuteAgent">(Resident)</string> | 
