diff options
| -rw-r--r-- | indra/llxuixml/llinitparam.cpp | 22 | ||||
| -rw-r--r-- | indra/llxuixml/llinitparam.h | 172 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 15 | ||||
| -rw-r--r-- | indra/newview/llappearancemgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llinventorymodel.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/lltexlayer.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewertexture.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.cpp | 34 | ||||
| -rw-r--r-- | indra/newview/llvoavatarself.h | 20 | ||||
| -rw-r--r-- | indra/newview/llwearable.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_about_land.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/floater_about_land.xml | 10 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/floater_postcard.xml | 6 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/floater_tools.xml | 12 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/menu_participant_list.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/notifications.xml | 2 | 
18 files changed, 183 insertions, 150 deletions
diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 2ead5a4a57..8d6aa405e2 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -139,7 +139,7 @@ namespace LLInitParam  	bool BaseBlock::validateBlock(bool emit_errors) const  	{ -		const BlockDescriptor& block_data = getBlockDescriptor(); +		const BlockDescriptor& block_data = mostDerivedBlockDescriptor();  		for (BlockDescriptor::param_validation_list_t::const_iterator it = block_data.mValidationList.begin(); it != block_data.mValidationList.end(); ++it)  		{  			const Param* param = getParamFromHandle(it->first); @@ -159,7 +159,7 @@ namespace LLInitParam  	{  		// named param is one like LLView::Params::follows  		// unnamed param is like LLView::Params::rect - implicit -		const BlockDescriptor& block_data = getBlockDescriptor(); +		const BlockDescriptor& block_data = mostDerivedBlockDescriptor();  		for (BlockDescriptor::param_list_t::const_iterator it = block_data.mUnnamedParams.begin();   			it != block_data.mUnnamedParams.end();  @@ -230,7 +230,7 @@ namespace LLInitParam  	{  		// named param is one like LLView::Params::follows  		// unnamed param is like LLView::Params::rect - implicit -		const BlockDescriptor& block_data = getBlockDescriptor(); +		const BlockDescriptor& block_data = mostDerivedBlockDescriptor();  		for (BlockDescriptor::param_list_t::const_iterator it = block_data.mUnnamedParams.begin();   			it != block_data.mUnnamedParams.end();  @@ -301,7 +301,7 @@ namespace LLInitParam  	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack)  	{ -		BlockDescriptor& block_data = getBlockDescriptor(); +		BlockDescriptor& block_data = mostDerivedBlockDescriptor();  		bool names_left = name_stack.first != name_stack.second;  		if (names_left) @@ -386,7 +386,7 @@ namespace LLInitParam  	void BaseBlock::addSynonym(Param& param, const std::string& synonym)  	{ -		BlockDescriptor& block_data = getBlockDescriptor(); +		BlockDescriptor& block_data = mostDerivedBlockDescriptor();  		if (block_data.mInitializationState == BlockDescriptor::INITIALIZING)  		{  			param_handle_t handle = getHandleFromParam(¶m); @@ -417,8 +417,8 @@ namespace LLInitParam  	{   		if (user_provided)  		{ -		mChangeVersion++; -	} +			mChangeVersion++; +		}  	}  	const std::string& BaseBlock::getParamName(const BlockDescriptor& block_data, const Param* paramp) const @@ -445,7 +445,7 @@ namespace LLInitParam  	ParamDescriptor* BaseBlock::findParamDescriptor(param_handle_t handle)  	{ -		BlockDescriptor& descriptor = getBlockDescriptor(); +		BlockDescriptor& descriptor = mostDerivedBlockDescriptor();  		BlockDescriptor::all_params_list_t::iterator end_it = descriptor.mAllParams.end();  		for (BlockDescriptor::all_params_list_t::iterator it = descriptor.mAllParams.begin();  			it != end_it; @@ -460,7 +460,7 @@ namespace LLInitParam  	// NOTE: this requires that "other" is of the same derived type as this  	bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)  	{ -		bool param_changed = false; +		bool some_param_changed = false;  		BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end();  		for (BlockDescriptor::all_params_list_t::const_iterator it = block_data.mAllParams.begin();  			it != end_it; @@ -471,10 +471,10 @@ namespace LLInitParam  			if (merge_func)  			{  				Param* paramp = getParamFromHandle(it->mParamHandle); -				param_changed |= merge_func(*paramp, *other_paramp, overwrite); +				some_param_changed |= merge_func(*paramp, *other_paramp, overwrite);  			}  		} -		return param_changed; +		return some_param_changed;  	}  	bool ParamCompare<LLSD, false>::equals(const LLSD &a, const LLSD &b) diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index c9c1d4af90..b645c4be7c 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -477,10 +477,10 @@ namespace LLInitParam  		bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack);  		bool serializeBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), const BaseBlock* diff_block = NULL) const; -		virtual bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t()) const; +		bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t()) const; -		const BlockDescriptor& getBlockDescriptor() const { return *mBlockDescriptor; } -		BlockDescriptor& getBlockDescriptor() { return *mBlockDescriptor; } +		const BlockDescriptor& mostDerivedBlockDescriptor() const { return *mBlockDescriptor; } +		BlockDescriptor& mostDerivedBlockDescriptor() { return *mBlockDescriptor; }  		// take all provided params from other and apply to self  		bool overwriteFrom(const BaseBlock& other) @@ -507,7 +507,7 @@ namespace LLInitParam  		BlockDescriptor*		mBlockDescriptor;	// most derived block descriptor -		static BlockDescriptor& blockDescriptor() +		static BlockDescriptor& selfBlockDescriptor()  		{  			static BlockDescriptor sBlockDescriptor;  			return sBlockDescriptor; @@ -559,7 +559,7 @@ namespace LLInitParam  		TypedParam(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count)   		:	Param(block_descriptor.mCurrentBlockPtr)  		{ -			if (block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING) +			if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))  			{  				ParamDescriptor param_descriptor(block_descriptor.mCurrentBlockPtr->getHandleFromParam(this),  												&mergeWith, @@ -584,6 +584,7 @@ namespace LLInitParam  			{  				if (parser.readValue<T>(typed_param.mData.mValue))  				{ +					typed_param.mData.clearKey();  					typed_param.setProvided(true);  					typed_param.enclosingBlock().setLastChangedParam(param, true);  					return true; @@ -690,7 +691,7 @@ namespace LLInitParam  				&& (overwrite || !dst_typed_param.isProvided()))  			{  				dst_typed_param.mData.clearKey(); -				dst_typed_param = src_typed_param; +				dst_typed_param.set(src_typed_param.get());  				return true;  			}  			return false; @@ -722,7 +723,7 @@ namespace LLInitParam  		:	Param(block_descriptor.mCurrentBlockPtr),  			T(value)  		{ -			if (block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING) +			if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))  			{  				ParamDescriptor param_descriptor(block_descriptor.mCurrentBlockPtr->getHandleFromParam(this),  												&mergeWith, @@ -741,6 +742,7 @@ namespace LLInitParam  			// attempt to parse block...  			if(typed_param.deserializeBlock(parser, name_stack))  			{ +				typed_param.mData.clearKey();  				typed_param.enclosingBlock().setLastChangedParam(param, true);  				return true;  			} @@ -856,21 +858,10 @@ namespace LLInitParam  		{  			const self_t& src_typed_param = static_cast<const self_t&>(src);  			self_t& dst_typed_param = static_cast<self_t&>(dst); -			if (overwrite) -			{ -				if (dst_typed_param.T::overwriteFrom(src_typed_param)) -				{ -					dst_typed_param.mData.clearKey(); -					return true; -				} -			} -			else +			if (dst_typed_param.T::merge(T::selfBlockDescriptor(), src_typed_param, overwrite || !dst_typed_param.isProvided()))  			{ -				if (dst_typed_param.T::fillFrom(src_typed_param)) -				{			 -					dst_typed_param.mData.clearKey(); -					return true; -				} +				dst_typed_param.mData.clearKey(); +				return true;  			}  			return false;  		} @@ -911,7 +902,7 @@ namespace LLInitParam  			mValues(value)  		{  			mCachedKeys.resize(mValues.size()); -			if (block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING) +			if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))  			{  				ParamDescriptor param_descriptor(block_descriptor.mCurrentBlockPtr->getHandleFromParam(this),  												&mergeWith, @@ -1060,9 +1051,9 @@ namespace LLInitParam  			self_t& dst_typed_param = static_cast<self_t&>(dst);  			if (src_typed_param.isProvided() -				&& (overwrite || !isProvided())) +				&& (overwrite || !dst_typed_param.isProvided()))  			{ -				dst_typed_param = src_typed_param; +				dst_typed_param.set(src_typed_param.get());  				return true;  			}  			return false; @@ -1094,7 +1085,7 @@ namespace LLInitParam  			mLastParamGeneration(0)  		{  			mCachedKeys.resize(mValues.size()); -			if (block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING) +			if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))  			{  				ParamDescriptor param_descriptor(block_descriptor.mCurrentBlockPtr->getHandleFromParam(this),  												&mergeWith, @@ -1252,7 +1243,7 @@ namespace LLInitParam  			if (src_typed_param.isProvided()  				&& (overwrite || !dst_typed_param.isProvided()))  			{ -				dst_typed_param = src_typed_param; +				dst_typed_param.set(src_typed_param.get());  				return true;  			}  			return false; @@ -1282,13 +1273,24 @@ namespace LLInitParam  		// take all provided params from other and apply to self  		bool overwriteFrom(const self_t& other)  		{ -			mCurChoice = other.mCurChoice; -			return BaseBlock::merge(blockDescriptor(), other, true); +			return merge(selfBlockDescriptor(), other, true);  		}  		// take all provided params that are not already provided, and apply to self  		bool fillFrom(const self_t& other)  		{ +			return merge(selfBlockDescriptor(), other, false); +		} + +		// merge with other block +		bool merge(BlockDescriptor& block_data, const self_t& other, bool overwrite) +		{ +			// only merge a choice if we are overwriting with other's contents +			if (overwrite) +			{ +				mCurChoice = other.mCurChoice; +				return BaseBlock::merge(selfBlockDescriptor(), other, overwrite); +			}  			return false;  		} @@ -1314,7 +1316,7 @@ namespace LLInitParam  		Choice()  		:	mCurChoice(0)  		{ -			BaseBlock::init(blockDescriptor(), BaseBlock::blockDescriptor(), sizeof(DERIVED_BLOCK)); +			BaseBlock::init(selfBlockDescriptor(), BaseBlock::selfBlockDescriptor(), sizeof(DERIVED_BLOCK));  		}  		// Alternatives are mutually exclusive wrt other Alternatives in the same block.   @@ -1331,13 +1333,14 @@ namespace LLInitParam  			typedef typename super_t::value_assignment_t								value_assignment_t;  			explicit Alternative(const char* name, value_assignment_t val = DefaultInitializer<T>::get()) -			:	super_t(DERIVED_BLOCK::blockDescriptor(), name, val, NULL, 0, 1), +			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),  				mOriginalValue(val)  			{  				// assign initial choice to first declared option -				DERIVED_BLOCK* blockp = ((DERIVED_BLOCK*)DERIVED_BLOCK::blockDescriptor().mCurrentBlockPtr); -				if (DERIVED_BLOCK::blockDescriptor().mInitializationState == BlockDescriptor::INITIALIZING -					&& blockp->mCurChoice == 0) +				DERIVED_BLOCK* blockp = ((DERIVED_BLOCK*)DERIVED_BLOCK::selfBlockDescriptor().mCurrentBlockPtr); +				if (LL_UNLIKELY( +						DERIVED_BLOCK::selfBlockDescriptor().mInitializationState == BlockDescriptor::INITIALIZING +							&& blockp->mCurChoice == 0))  				{  					blockp->mCurChoice = Param::enclosingBlock().getHandleFromParam(this);  				} @@ -1382,7 +1385,7 @@ namespace LLInitParam  		};  	protected: -		static BlockDescriptor& blockDescriptor() +		static BlockDescriptor& selfBlockDescriptor()  		{  			static BlockDescriptor sBlockDescriptor;  			return sBlockDescriptor; @@ -1410,19 +1413,19 @@ namespace LLInitParam  		// take all provided params from other and apply to self  		bool overwriteFrom(const self_t& other)  		{ -			return BaseBlock::merge(blockDescriptor(), other, true); +			return BaseBlock::merge(selfBlockDescriptor(), other, true);  		}  		// take all provided params that are not already provided, and apply to self  		bool fillFrom(const self_t& other)  		{ -			return BaseBlock::merge(blockDescriptor(), other, false); +			return BaseBlock::merge(selfBlockDescriptor(), other, false);  		}  	protected:  		Block()  		{  			//#pragma message("Parsing LLInitParam::Block") -			BaseBlock::init(blockDescriptor(), BASE_BLOCK::blockDescriptor(), sizeof(DERIVED_BLOCK)); +			BaseBlock::init(selfBlockDescriptor(), BASE_BLOCK::selfBlockDescriptor(), sizeof(DERIVED_BLOCK));  		}  		// @@ -1436,7 +1439,7 @@ namespace LLInitParam  			typedef typename super_t::value_assignment_t								value_assignment_t;  			explicit Optional(const char* name = "", value_assignment_t val = DefaultInitializer<T>::get()) -			:	super_t(DERIVED_BLOCK::blockDescriptor(), name, val, NULL, 0, 1) +			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1)  			{  				//#pragma message("Parsing LLInitParam::Block::Optional")  			} @@ -1465,7 +1468,7 @@ namespace LLInitParam  			// mandatory parameters require a name to be parseable  			explicit Mandatory(const char* name = "", value_assignment_t val = DefaultInitializer<T>::get()) -			:	super_t(DERIVED_BLOCK::blockDescriptor(), name, val, &validate, 1, 1) +			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, &validate, 1, 1)  			{}  			Mandatory& operator=(value_assignment_t val) @@ -1501,7 +1504,7 @@ namespace LLInitParam  			typedef typename container_t::const_iterator							const_iterator;  			explicit Multiple(const char* name = "", value_assignment_t val = DefaultInitializer<container_t>::get()) -			:	super_t(DERIVED_BLOCK::blockDescriptor(), name, val, &validate, RANGE::minCount(), RANGE::maxCount()) +			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, &validate, RANGE::minCount(), RANGE::maxCount())  			{}  			using super_t::operator(); @@ -1529,10 +1532,10 @@ namespace LLInitParam  		{  		public:  			explicit Deprecated(const char* name) -			:	Param(DERIVED_BLOCK::blockDescriptor().mCurrentBlockPtr) +			:	Param(DERIVED_BLOCK::selfBlockDescriptor().mCurrentBlockPtr)  			{ -				BlockDescriptor& block_descriptor = DERIVED_BLOCK::blockDescriptor(); -				if (block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING) +				BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor(); +				if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))  				{  					ParamDescriptor param_descriptor(block_descriptor.mCurrentBlockPtr->getHandleFromParam(this),  													NULL, @@ -1561,7 +1564,7 @@ namespace LLInitParam  		typedef Deprecated Ignored;  	protected: -		static BlockDescriptor& blockDescriptor() +		static BlockDescriptor& selfBlockDescriptor()  		{  			static BlockDescriptor sBlockDescriptor;  			return sBlockDescriptor; @@ -1574,6 +1577,13 @@ namespace LLInitParam  		public Param  	{  	public: +		typedef enum e_value_age +		{	 +			OLDER_THAN_BLOCK,	// mData.mValue needs to be refreshed from the block parameters +			NEWER_THAN_BLOCK,	// mData.mValue holds the authoritative value (which has been replicated to the block parameters via setBlockFromValue) +			SAME_AS_BLOCK		// mData.mValue is derived from the block parameters, which are authoritative +		} EValueAge; +  		typedef BlockValue<T>										self_t;  		typedef Block<TypedParam<T, TypeValues<T>, false> >			block_t;  		typedef const T&											value_const_ref_t; @@ -1582,9 +1592,9 @@ namespace LLInitParam  		BlockValue(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count)  		:	Param(block_descriptor.mCurrentBlockPtr), -			mData(value) +			mData(value, NEWER_THAN_BLOCK)  		{ -			if (block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING) +			if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))  			{  				ParamDescriptor param_descriptor(block_descriptor.mCurrentBlockPtr->getHandleFromParam(this),  												&mergeWith, @@ -1604,7 +1614,7 @@ namespace LLInitParam  		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)  		{ -			self_t& typed_param = static_cast<self_t&>(param); +			DERIVED& typed_param = static_cast<DERIVED&>(param);  			// type to apply parse direct value T  			if (name_stack.first == name_stack.second)  			{ @@ -1612,7 +1622,10 @@ namespace LLInitParam  				{  					typed_param.enclosingBlock().setLastChangedParam(param, true);  					typed_param.setProvided(true); -					typed_param.mData.mLastParamVersion = typed_param.BaseBlock::getLastChangeVersion(); +					typed_param.mData.clearKey(); +					typed_param.mData.mValueAge = NEWER_THAN_BLOCK; +					typed_param.setBlockFromValue(); +  					return true;  				} @@ -1628,7 +1641,9 @@ namespace LLInitParam  							typed_param.mData.setKey(name);  							typed_param.enclosingBlock().setLastChangedParam(param, true);  							typed_param.setProvided(true); -							typed_param.mData.mLastParamVersion = typed_param.BaseBlock::getLastChangeVersion(); +							typed_param.mData.mValueAge = NEWER_THAN_BLOCK; +							typed_param.setBlockFromValue(); +  							return true;  						}  					} @@ -1703,16 +1718,18 @@ namespace LLInitParam  		bool isProvided() const   		{ -			// either param value provided directly or block is sufficiently filled in +			if (!Param::getProvided()) return false; + +			// block has an updated parameter  			// if cached value is stale, regenerate from params -			if (Param::getProvided() && mData.mLastParamVersion < BaseBlock::getLastChangeVersion()) +			if (mData.mValueAge == OLDER_THAN_BLOCK)  			{  				if (block_t::validateBlock(false))  				{  					static_cast<const DERIVED*>(this)->setValueFromBlock();  					// clear stale keyword associated with old value  					mData.clearKey(); -					mData.mLastParamVersion = BaseBlock::getLastChangeVersion(); +					mData.mValueAge = SAME_AS_BLOCK;  					return true;  				}  				else @@ -1722,8 +1739,11 @@ namespace LLInitParam  					return false;    				}  			} -			// either no data provided, or we have a valid value in hand -			return Param::getProvided(); +			else +			{ +				// we have a valid value in hand +				return true; +			}  		}  		void set(value_assignment_t val, bool flag_as_provided = true) @@ -1731,7 +1751,7 @@ namespace LLInitParam  			Param::enclosingBlock().setLastChangedParam(*this, flag_as_provided);  			// set param version number to be up to date, so we ignore block contents -			mData.mLastParamVersion = BaseBlock::getLastChangeVersion(); +			mData.mValueAge = NEWER_THAN_BLOCK;  			mData.mValue = val;  			mData.clearKey(); @@ -1756,6 +1776,8 @@ namespace LLInitParam  			if (user_provided)  			{  				setProvided(true);  // some component provided +				// a parameter changed, so our value is out of date +				mData.mValueAge = OLDER_THAN_BLOCK;  			}  		} @@ -1763,54 +1785,54 @@ namespace LLInitParam  		value_assignment_t get() const  		{  			// if some parameters were provided, issue warnings on invalid blocks -			if (Param::getProvided() && (mData.mLastParamVersion < BaseBlock::getLastChangeVersion())) +			if (Param::getProvided() && (mData.mValueAge == OLDER_THAN_BLOCK))  			{  				// go ahead and issue warnings at this point if any param is invalid  				if(block_t::validateBlock(true))  				{  					static_cast<const DERIVED*>(this)->setValueFromBlock();  					mData.clearKey(); -					mData.mLastParamVersion = BaseBlock::getLastChangeVersion(); +					mData.mValueAge = SAME_AS_BLOCK;  				}  			}  			return mData.mValue;  		} -		// mutable to allow lazy updates on get +  		struct Data : public key_cache_t  		{ -			Data(const T& value)  +			Data(const T& value, EValueAge age)   			:	mValue(value), -				mLastParamVersion(0) +				mValueAge(age)  			{} -			T		mValue; -			S32		mLastParamVersion; +			T			mValue; +			EValueAge	mValueAge;  		}; +		// mutable to allow lazy updates on get  		mutable Data		mData;  	private:  		static bool mergeWith(Param& dst, const Param& src, bool overwrite)  		{ -			const self_t& src_typed_param = static_cast<const self_t&>(src); -			self_t& dst_typed_param = static_cast<self_t&>(dst); +			const DERIVED& src_typed_param = static_cast<const DERIVED&>(src); +			DERIVED& dst_typed_param = static_cast<DERIVED&>(dst);  			if (src_typed_param.isProvided()  				&& (overwrite || !dst_typed_param.isProvided()))  			{ -				// assign individual parameters -				dst_typed_param.BaseBlock::merge(block_t::blockDescriptor(), src_typed_param, overwrite); - -				// then copy actual value -				dst_typed_param.mData.mValue = src_typed_param.get(); -				dst_typed_param.mData.clearKey(); -				dst_typed_param.setProvided(true); - -				// Propagate value back to block params since the value was updated during this merge. -				// This will result in mData.mValue and the block params being in sync. -				static_cast<DERIVED&>(dst_typed_param).setBlockFromValue(); +				if (src_typed_param.mData.mValueAge == NEWER_THAN_BLOCK) +				{ +					// copy value over +					dst_typed_param.set(src_typed_param.get()); +				} +				else +				{ +					// merge individual parameters into destination +					dst_typed_param.merge(block_t::selfBlockDescriptor(), src_typed_param, overwrite); +				}  				return true;  			}  			return false; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1d27d00451..a4aa90289d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5971,7 +5971,7 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>0.2</real> +    <real>0.125</real>    </map>    <key>MediaRollOffMin</key>    <map> @@ -5982,7 +5982,7 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>7.0</real> +    <real>5.0</real>    </map>    <key>MediaRollOffMax</key>    <map> @@ -9053,6 +9053,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>TextureDiscardLevel</key> +    <map> +      <key>Comment</key> +      <string>Specify texture resolution (0 = highest, 5 = lowest)</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>U32</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>TextureLoadFullRes</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index dcef86a5fc..e481611ace 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -526,7 +526,7 @@ bool LLWearableHoldingPattern::pollMissingWearables()  	if (done)  	{ -		gAgentAvatarp->wearablesLoaded(); +		gAgentAvatarp->debugWearablesLoaded();  		clearCOFLinksForMissingWearables();  		onAllComplete();  	} @@ -1667,7 +1667,7 @@ void LLAppearanceMgr::autopopulateOutfits()  // Handler for anything that's deferred until avatar de-clouds.  void LLAppearanceMgr::onFirstFullyVisible()  { -	gAgentAvatarp->avatarVisible(); +	gAgentAvatarp->debugAvatarVisible();  	autopopulateOutfits();  } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 2d27c89074..0f532236e4 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -4143,21 +4143,9 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)  void LLObjectBridge::openItem()  { -	LLViewerInventoryItem* item = getItem(); - -	if (item) -	{ -		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel()); -	} - -	LLSD key; -	key["id"] = mUUID; -	LLSideTray::getInstance()->showPanel("sidepanel_inventory", key); - -	// Disable old properties floater; this is replaced by the sidepanel. -	/* -	  LLFloaterReg::showInstance("properties", mUUID); -	*/ +	// object double-click action is to wear/unwear object +	performAction(getInventoryModel(), +		      get_is_item_worn(mUUID) ? "detach" : "attach");  }  LLFontGL::StyleFlags LLObjectBridge::getLabelStyle() const diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index c373512ace..864545f870 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1244,9 +1244,11 @@ void LLInventoryModel::addCategory(LLViewerInventoryCategory* category)  void LLInventoryModel::addItem(LLViewerInventoryItem* item)  { +	/*  	const LLViewerInventoryCategory* cat = gInventory.getCategory(item->getParentUUID()); // Seraph remove for 2.1  	const std::string cat_name = cat ? cat->getName() : "CAT NOT FOUND"; // Seraph remove for 2.1  	llinfos << "Added item [ name:" << item->getName() << " UUID:" << item->getUUID() << " type:" << item->getActualType() << " ] to folder [ name:" << cat_name << " uuid:" << item->getParentUUID() << " ]" << llendl; // Seraph remove for 2.1 +	*/  	llassert(item);  	if(item) diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 337627cc79..4be03596f8 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -237,7 +237,7 @@ BOOL LLTexLayerSetBuffer::render()  		{  			if (mTexLayerSet->isVisible())  			{ -				mTexLayerSet->getAvatar()->bakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish. +				mTexLayerSet->getAvatar()->debugBakedTextureUpload(mTexLayerSet->getBakedTexIndex(), FALSE); // FALSE for start of upload, TRUE for finish.  				readBackAndUpload();  			}  			else diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 7429a49ccf..e5c5a607dd 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1937,7 +1937,7 @@ void LLViewerMediaImpl::updateVolume()  				// attenuated_volume = 1 / (roll_off_rate * (d - min))^2  				// the +1 is there so that for distance 0 the volume stays the same  				F64 adjusted_distance = mProximityCamera - gSavedSettings.getF32("MediaRollOffMin"); -				F64 attenuation = gSavedSettings.getF32("MediaRollOffRate") * adjusted_distance; +				F64 attenuation = 1.0 + (gSavedSettings.getF32("MediaRollOffRate") * adjusted_distance);  				attenuation = 1.0 / (attenuation * attenuation);  				// the attenuation multiplier should never be more than one since that would increase volume  				volume = volume * llmin(1.0, attenuation); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index d925ab0d90..d8a9ce9374 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1893,6 +1893,12 @@ bool LLViewerFetchedTexture::updateFetch()  			h = mGLTexturep->getHeight(0);  			c = mComponents;  		} + +		const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel"); +		if (override_tex_discard_level != 0) +		{ +			desired_discard = override_tex_discard_level; +		}  		// bypass texturefetch directly by pulling from LLTextureCache  		bool fetch_request_created = false; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index c82de73f25..cf3fb01b5a 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -157,14 +157,14 @@ void LLVOAvatarSelf::initInstance()  	{  		for (U32 j = 0; j <= MAX_DISCARD_LEVEL; ++j)  		{ -			mTextureLoadTimes[i][j] = -1.0f; +			mDebugTextureLoadTimes[i][j] = -1.0f;  		}  	}  	for (U32 i =0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)  	{ -		mBakedTextureTimes[i][0] = -1.0f; -		mBakedTextureTimes[i][1] = -1.0f; +		mDebugBakedTextureTimes[i][0] = -1.0f; +		mDebugBakedTextureTimes[i][1] = -1.0f;  	}  	status &= buildMenus(); @@ -1271,6 +1271,8 @@ BOOL LLVOAvatarSelf::isLocalTextureDataAvailable(const LLTexLayerSet* layerset)  //-----------------------------------------------------------------------------  BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) const  { +	const U32 override_tex_discard_level = gSavedSettings.getU32("TextureDiscardLevel"); +  	for (U32 i = 0; i < mBakedTextureDatas.size(); i++)  	{  		if (layerset == mBakedTextureDatas[i].mTexLayerSet) @@ -1285,7 +1287,7 @@ BOOL LLVOAvatarSelf::isLocalTextureDataFinal(const LLTexLayerSet* layerset) cons  				const U32 wearable_count = gAgentWearables.getWearableCount(wearable_type);  				for (U32 wearable_index = 0; wearable_index < wearable_count; wearable_index++)  				{ -					if (getLocalDiscardLevel(*local_tex_iter, wearable_index) != 0) +					if (getLocalDiscardLevel(*local_tex_iter, wearable_index) > (S32)(override_tex_discard_level))  					{  						return FALSE;  					} @@ -1761,12 +1763,12 @@ BOOL LLVOAvatarSelf::getIsCloud()  }  /*static*/ -void LLVOAvatarSelf::onTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata) +void LLVOAvatarSelf::debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)  { -	gAgentAvatarp->timingLocalTexLoaded(success, src_vi, src, aux_src, discard_level, final, userdata); +	gAgentAvatarp->debugTimingLocalTexLoaded(success, src_vi, src, aux_src, discard_level, final, userdata);  } -void LLVOAvatarSelf::timingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata) +void LLVOAvatarSelf::debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)  {  	LLAvatarTexData *data = (LLAvatarTexData *)userdata;  	if (!data) @@ -1776,14 +1778,14 @@ void LLVOAvatarSelf::timingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *  	ETextureIndex index = data->mIndex; -if (index < 0 || index >= TEX_NUM_INDICES) +	if (index < 0 || index >= TEX_NUM_INDICES)  	{  		return;  	}  	if (discard_level >=0 && discard_level <= MAX_DISCARD_LEVEL) // ignore discard level -1, as it means we have no data.  	{ -		mTextureLoadTimes[(U32)index][(U32)discard_level] = mDebugSelfLoadTimer.getElapsedTimeF32(); +		mDebugTextureLoadTimes[(U32)index][(U32)discard_level] = mDebugSelfLoadTimer.getElapsedTimeF32();  	}  	if (final)  	{ @@ -1791,14 +1793,14 @@ if (index < 0 || index >= TEX_NUM_INDICES)  	}  } -void LLVOAvatarSelf::bakedTextureUpload(EBakedTextureIndex index, BOOL finished) +void LLVOAvatarSelf::debugBakedTextureUpload(EBakedTextureIndex index, BOOL finished)  {  	U32 done = 0;  	if (finished)  	{  		done = 1;  	} -	mBakedTextureTimes[index][done] = mDebugSelfLoadTimer.getElapsedTimeF32(); +	mDebugBakedTextureTimes[index][done] = mDebugSelfLoadTimer.getElapsedTimeF32();  }  const LLUUID& LLVOAvatarSelf::grabBakedTexture(EBakedTextureIndex baked_index) const @@ -1963,7 +1965,7 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )  	const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(te);  	if (texture_dict->mIsBakedTexture)  	{ -		bakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish. +		debugBakedTextureUpload(texture_dict->mBakedTextureIndex, TRUE); // FALSE for start of upload, TRUE for finish.  		llinfos << "New baked texture: " << texture_dict->mName << " UUID: " << uuid <<llendl;  	}  	else @@ -1993,8 +1995,8 @@ void LLVOAvatarSelf::outputRezDiagnostics() const  {  	const F32 final_time = mDebugSelfLoadTimer.getElapsedTimeF32();  	llinfos << "REZTIME: Myself rez stats:" << llendl; -	llinfos << "\t Time from avatar creation to load wearables: " << (S32)mTimeWearablesLoaded << llendl; -	llinfos << "\t Time from avatar creation to de-cloud: " << (S32)mTimeAvatarVisible << llendl; +	llinfos << "\t Time from avatar creation to load wearables: " << (S32)mDebugTimeWearablesLoaded << llendl; +	llinfos << "\t Time from avatar creation to de-cloud: " << (S32)mDebugTimeAvatarVisible << llendl;  	llinfos << "\t Time from avatar creation to de-cloud for others: " << (S32)final_time << llendl;  	llinfos << "\t Load time for each texture: " << llendl;  	for (U32 i = 0; i < LLVOAvatarDefines::TEX_NUM_INDICES; ++i) @@ -2005,7 +2007,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const  		for (j=0; j <= MAX_DISCARD_LEVEL; j++)  		{  			out << "\t"; -			S32 load_time = (S32)mTextureLoadTimes[i][j]; +			S32 load_time = (S32)mDebugTextureLoadTimes[i][j];  			if (load_time == -1)  			{  				out << "*"; @@ -2025,7 +2027,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const  	llinfos << "\t Time points for each upload (start / finish)" << llendl;  	for (U32 i = 0; i < LLVOAvatarDefines::BAKED_NUM_INDICES; ++i)  	{ -		llinfos << "\t\t (" << i << ") \t" << (S32)mBakedTextureTimes[i][0] << " / " << (S32)mBakedTextureTimes[i][1] << llendl; +		llinfos << "\t\t (" << i << ") \t" << (S32)mDebugBakedTextureTimes[i][0] << " / " << (S32)mDebugBakedTextureTimes[i][1] << llendl;  	}  } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 666219f3aa..8e6d9698f2 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -124,8 +124,6 @@ public:  	//--------------------------------------------------------------------  public:  	/*virtual*/ BOOL    getIsCloud(); -	void bakedTextureUpload(LLVOAvatarDefines::EBakedTextureIndex index, BOOL finished); -	static void		onTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);  	//--------------------------------------------------------------------  	// Region state @@ -217,6 +215,8 @@ public:  	static void			processRebakeAvatarTextures(LLMessageSystem* msg, void**);  protected:  	/*virtual*/ void	removeMissingBakedTextures(); +private: +	LLFrameTimer    	mBakeTimeoutTimer;  	//--------------------------------------------------------------------  	// Layers @@ -348,16 +348,18 @@ public:  		LLUUID			mAvatarID;  		LLVOAvatarDefines::ETextureIndex	mIndex;  	}; -	void wearablesLoaded() { mTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); } -	void avatarVisible() { mTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); } +	void debugWearablesLoaded() { mDebugTimeWearablesLoaded = mDebugSelfLoadTimer.getElapsedTimeF32(); } +	void debugAvatarVisible() { mDebugTimeAvatarVisible = mDebugSelfLoadTimer.getElapsedTimeF32(); }  	void outputRezDiagnostics() const; +	void debugBakedTextureUpload(LLVOAvatarDefines::EBakedTextureIndex index, BOOL finished); +	static void		debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);  private:  	LLFrameTimer    mDebugSelfLoadTimer; -	F32				mTimeWearablesLoaded; -	F32 			mTimeAvatarVisible; -	F32 			mTextureLoadTimes[LLVOAvatarDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level -	F32 			mBakedTextureTimes[LLVOAvatarDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture -	void			timingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata); +	F32				mDebugTimeWearablesLoaded; +	F32 			mDebugTimeAvatarVisible; +	F32 			mDebugTextureLoadTimes[LLVOAvatarDefines::TEX_NUM_INDICES][MAX_DISCARD_LEVEL+1]; // load time for each texture at each discard level +	F32 			mDebugBakedTextureTimes[LLVOAvatarDefines::BAKED_NUM_INDICES][2]; // time to start upload and finish upload of each baked texture +	void			debugTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);  /**                    Diagnostics   **                                                                            ** diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 6c27aefebb..10b9a18fa8 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -442,7 +442,7 @@ BOOL LLWearable::importFile( LLFILE* file )  			delete mSavedTEMap[te];  		} -		image->setLoadedCallback(LLVOAvatarSelf::onTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te)); +		image->setLoadedCallback(LLVOAvatarSelf::debugOnTimingLocalTexLoaded,0,TRUE,FALSE, new LLVOAvatarSelf::LLAvatarTexData(id, (LLVOAvatarDefines::ETextureIndex)te));  		LLUUID textureid(text_buffer); diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 20e7c28db0..5f28fa6495 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1933,7 +1933,7 @@ Only large parcels can be listed in search.               left_delta="20"               name="Only Allow"               top="49" -             width="278"> +             width="325">                  Restrict Access to Residents verified by:              </text>              <check_box diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index d23ab3565b..10c27a2b33 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -308,10 +308,10 @@  				(なし)  			</panel.string>  			<panel.string name="push_restrict_text"> -				プッシングを制限 +				プッシュ禁止  			</panel.string>  			<panel.string name="push_restrict_region_text"> -				プッシングを制限 (地域設定優先) +				プッシュ禁止 (地域設定優先)  			</panel.string>  			<text name="allow_label">  				他の住人への許可: @@ -337,7 +337,7 @@  				土地オプション:  			</text>  			<check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/> -			<check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/> +			<check_box label="プッシュ禁止" name="PushRestrictCheck" tool_tip="スクリプトによるプッシュを禁止します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/>  			<check_box label="検索に区画を表示(週 L$ 30)" name="ShowDirectoryCheck" tool_tip="この区画を検索結果に表示します"/>  			<combo_box name="land category with adult">  				<combo_box.item label="全カテゴリ" name="item0"/> @@ -355,7 +355,7 @@  				<combo_box.item label="その他" name="item12"/>  			</combo_box>  			<combo_box name="land category"> -				<combo_box.item label="全カテゴリー" name="item0"/> +				<combo_box.item label="全カテゴリ" name="item0"/>  				<combo_box.item label="Linden 所在地" name="item1"/>  				<combo_box.item label="アート&カルチャー" name="item3"/>  				<combo_box.item label="ビジネス" name="item4"/> @@ -379,7 +379,7 @@  			<button label="設定" label_selected="設定" name="Set" tool_tip="訪問者の着地点の設定を行います。この区画内に立って行ってください。"/>  			<button label="クリア" label_selected="クリア" name="Clear" tool_tip="着地点をクリア"/>  			<text name="Teleport Routing: "> -				テレポート制限: +				テレポート経路:  			</text>  			<combo_box name="landing type" tool_tip="テレポート経路 -- あなたの土地へのテレポート経路を選択">  				<combo_box.item label="不可" name="Blocked"/> diff --git a/indra/newview/skins/default/xui/ja/floater_postcard.xml b/indra/newview/skins/default/xui/ja/floater_postcard.xml index 5a2b047fe0..9d9b59fa51 100644 --- a/indra/newview/skins/default/xui/ja/floater_postcard.xml +++ b/indra/newview/skins/default/xui/ja/floater_postcard.xml @@ -1,11 +1,11 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="スナップショットをメール"> +<floater name="Postcard" title="スナップショットをEメールで送信">  	<text name="to_label"> -		住人のメール: +		受信先のEメール:  	</text>  	<line_editor left="145" name="to_form" width="125"/>  	<text name="from_label"> -		あなたのメール: +		あなたのEメール:  	</text>  	<line_editor left="145" name="from_form" width="125"/>  	<text name="name_label"> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index a7e687abeb..6c3ad99fa7 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -49,7 +49,7 @@  	</text>  	<radio_group name="focus_radio_group">  		<radio_item label="ズーム" name="radio zoom"/> -		<radio_item label="軌跡(Ctrl)" name="radio orbit"/> +		<radio_item label="旋回(Ctrl)" name="radio orbit"/>  		<radio_item label="水平・垂直移動 (Ctrl + Shift)" name="radio pan"/>  	</radio_group>  	<radio_group name="move_radio_group"> @@ -69,9 +69,9 @@  	</text>  	<check_box left="116" name="checkbox uniform"/>  	<text name="checkbox uniform label"> -		両側を引伸ばす +		両側を引き延ばす  	</text> -	<check_box initial_value="true" label="テクスチャを引伸ばす" name="checkbox stretch textures"/> +	<check_box initial_value="true" label="テクスチャを引き延ばす" name="checkbox stretch textures"/>  	<check_box initial_value="true" label="グリッドにスナップ" left_delta="27" name="checkbox snap to grid"/>  	<combo_box left_delta="60" name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" width="76">  		<combo_box.item label="インワールドグリッド" name="World"/> @@ -87,7 +87,7 @@  	<button label="" label_selected="" name="ToolHemiCylinder" tool_tip="半円柱"/>  	<button label="" label_selected="" name="ToolCone" tool_tip="円錐"/>  	<button label="" label_selected="" name="ToolHemiCone" tool_tip="半円錐"/> -	<button label="" label_selected="" name="ToolSphere" tool_tip="球形"/> +	<button label="" label_selected="" name="ToolSphere" tool_tip="球体"/>  	<button label="" label_selected="" name="ToolHemiSphere" tool_tip="半球"/>  	<button label="" label_selected="" name="ToolTorus" tool_tip="トーラス"/>  	<button label="" label_selected="" name="ToolTube" tool_tip="チューブ"/> @@ -267,7 +267,7 @@  				<combo_box.item label="ボックス" name="Box"/>  				<combo_box.item label="シリンダー" name="Cylinder"/>  				<combo_box.item label="プリズム" name="Prism"/> -				<combo_box.item label="球形" name="Sphere"/> +				<combo_box.item label="球体" name="Sphere"/>  				<combo_box.item label="トーラス" name="Torus"/>  				<combo_box.item label="チューブ" name="Tube"/>  				<combo_box.item label="リング" name="Ring"/> @@ -350,7 +350,7 @@  			</text>  			<combo_box name="sculpt type control">  				<combo_box.item label="(なし)" name="None"/> -				<combo_box.item label="球形" name="Sphere"/> +				<combo_box.item label="球体" name="Sphere"/>  				<combo_box.item label="トーラス" name="Torus"/>  				<combo_box.item label="平面" name="Plane"/>  				<combo_box.item label="シリンダー" name="Cylinder"/> diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 3d0368245e..4555bad9ba 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -10,7 +10,7 @@  	<menu_item_call label="支払う" name="Pay"/>  	<menu_item_check label="人のアイコン表示" name="View Icons"/>  	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/> -	<menu_item_check label="文字をブロックする" name="MuteText"/> +	<menu_item_check label="文字をブロック" name="MuteText"/>  	<context_menu label="モデレーターのオプション >" name="Moderator Options">  		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>  		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 7adc5e3a78..f734bcde42 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -2230,7 +2230,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ  ここでは飛べません。  	</notification>  	<notification name="PushRestricted"> -		このエリアではプッシュが制限されています。 土地所有者以外は他人をプッシュすることはできません。 +		このエリアではプッシュが禁止されています。 土地所有者以外は他人をプッシュすることはできません。  	</notification>  	<notification name="NoVoice">  		このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。  | 
