STORM-1213 : pull from viewer-experience-merge
commit
37084d7edb
|
|
@ -554,7 +554,7 @@ void LLAvatarNameCache::eraseUnrefreshed()
|
|||
{
|
||||
sLastExpireCheck = now;
|
||||
|
||||
for (cache_t::iterator it = sCache.begin(); it != sCache.end(); ++it)
|
||||
for (cache_t::iterator it = sCache.begin(); it != sCache.end();)
|
||||
{
|
||||
const LLAvatarName& av_name = it->second;
|
||||
if (av_name.mExpires < max_unrefreshed)
|
||||
|
|
@ -564,8 +564,12 @@ void LLAvatarNameCache::eraseUnrefreshed()
|
|||
<< " user '" << av_name.mUsername << "' "
|
||||
<< "expired " << now - av_name.mExpires << " secs ago"
|
||||
<< LL_ENDL;
|
||||
sCache.erase(it);
|
||||
sCache.erase(it++);
|
||||
}
|
||||
else
|
||||
{
|
||||
++it;
|
||||
}
|
||||
}
|
||||
LL_INFOS("AvNameCache") << sCache.size() << " cached avatar names" << LL_ENDL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ namespace LLInitParam
|
|||
bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
|
||||
void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
|
||||
bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_value, S32 max_value) const { return true; }
|
||||
bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
|
||||
bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
|
||||
bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
|
||||
|
||||
ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color)
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ namespace LLInitParam
|
|||
bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
|
||||
void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
|
||||
bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_count, S32 max_count) const { return true; }
|
||||
bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
|
||||
bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
|
||||
bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
|
||||
|
||||
ParamValue<LLUIColor, TypeValues<LLUIColor> >::ParamValue(const LLUIColor& color)
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ namespace LLInitParam
|
|||
//static
|
||||
void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptorPtr in_param, const char* char_name)
|
||||
{
|
||||
// create a copy of the paramdescriptor in allparams
|
||||
// create a copy of the param descriptor in mAllParams
|
||||
// so other data structures can store a pointer to it
|
||||
block_data.mAllParams.push_back(in_param);
|
||||
ParamDescriptorPtr param(block_data.mAllParams.back());
|
||||
|
|
@ -469,7 +469,7 @@ namespace LLInitParam
|
|||
|
||||
// take all provided params from other and apply to self
|
||||
// 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 BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
|
||||
{
|
||||
bool some_param_changed = false;
|
||||
BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end();
|
||||
|
|
|
|||
|
|
@ -476,8 +476,12 @@ namespace LLInitParam
|
|||
void init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size);
|
||||
|
||||
|
||||
bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
|
||||
{
|
||||
return mergeBlock(block_data, other, overwrite);
|
||||
}
|
||||
// take all provided params from other and apply to self
|
||||
bool merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
|
||||
bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
|
||||
|
||||
// can be updated in getters
|
||||
mutable S32 mChangeVersion;
|
||||
|
|
@ -896,12 +900,14 @@ 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 (src_typed_param.isProvided()
|
||||
&& (overwrite || !dst_typed_param.isProvided()))
|
||||
if (src_typed_param.anyProvided())
|
||||
{
|
||||
if (dst_typed_param.merge(param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
|
||||
bool param_provided = src_typed_param.isProvided() && (overwrite || !dst_typed_param.isProvided());
|
||||
if (dst_typed_param.mergeBlockParam(param_provided, param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
|
||||
{
|
||||
dst_typed_param.clearValueName();
|
||||
dst_typed_param.setProvided(true);
|
||||
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1082,6 +1088,12 @@ namespace LLInitParam
|
|||
std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(new_values));
|
||||
std::swap(dst_typed_param.mValues, new_values);
|
||||
}
|
||||
|
||||
if (src_typed_param.begin() != src_typed_param.end())
|
||||
{
|
||||
dst_typed_param.setProvided(true);
|
||||
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1282,6 +1294,13 @@ namespace LLInitParam
|
|||
std::copy(dst_typed_param.begin(), dst_typed_param.end(), std::back_inserter(new_values));
|
||||
std::swap(dst_typed_param.mValues, new_values);
|
||||
}
|
||||
|
||||
if (src_typed_param.begin() != src_typed_param.end())
|
||||
{
|
||||
dst_typed_param.setProvided(true);
|
||||
dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1301,25 +1320,29 @@ namespace LLInitParam
|
|||
// take all provided params from other and apply to self
|
||||
bool overwriteFrom(const self_t& other)
|
||||
{
|
||||
return merge(selfBlockDescriptor(), other, true);
|
||||
return mergeBlock(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);
|
||||
return mergeBlock(selfBlockDescriptor(), other, false);
|
||||
}
|
||||
|
||||
bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const self_t& other, bool overwrite)
|
||||
{
|
||||
if (param_provided)
|
||||
{
|
||||
return mergeBlock(block_data, other, overwrite);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// merge with other block
|
||||
bool merge(BlockDescriptor& block_data, const self_t& other, bool overwrite)
|
||||
bool mergeBlock(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;
|
||||
mCurChoice = other.mCurChoice;
|
||||
return BaseBlock::mergeBlock(selfBlockDescriptor(), other, overwrite);
|
||||
}
|
||||
|
||||
// clear out old choice when param has changed
|
||||
|
|
@ -1445,13 +1468,13 @@ namespace LLInitParam
|
|||
// take all provided params from other and apply to self
|
||||
bool overwriteFrom(const self_t& other)
|
||||
{
|
||||
return static_cast<DERIVED_BLOCK*>(this)->merge(selfBlockDescriptor(), other, true);
|
||||
return static_cast<DERIVED_BLOCK*>(this)->mergeBlock(selfBlockDescriptor(), other, true);
|
||||
}
|
||||
|
||||
// take all provided params that are not already provided, and apply to self
|
||||
bool fillFrom(const self_t& other)
|
||||
{
|
||||
return static_cast<DERIVED_BLOCK*>(this)->merge(selfBlockDescriptor(), other, false);
|
||||
return static_cast<DERIVED_BLOCK*>(this)->mergeBlock(selfBlockDescriptor(), other, false);
|
||||
}
|
||||
|
||||
virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); }
|
||||
|
|
@ -1862,7 +1885,16 @@ namespace LLInitParam
|
|||
mValue = value;
|
||||
}
|
||||
|
||||
bool merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
|
||||
bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
|
||||
{
|
||||
if (param_provided)
|
||||
{
|
||||
return mergeBlock(block_data, other, overwrite);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
|
||||
{
|
||||
const derived_t& src_typed_param = static_cast<const derived_t&>(other);
|
||||
|
||||
|
|
@ -1875,7 +1907,7 @@ namespace LLInitParam
|
|||
else
|
||||
{
|
||||
// merge individual parameters into destination
|
||||
return block_t::merge(block_t::selfBlockDescriptor(), src_typed_param, overwrite);
|
||||
return block_t::mergeBlock(block_t::selfBlockDescriptor(), src_typed_param, overwrite);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -302,8 +302,14 @@ void LLAvatarActions::startConference(const uuid_vec_t& ids)
|
|||
|
||||
static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
llinfos << "opening web profile for " << av_name.mUsername << llendl;
|
||||
std::string url = getProfileURL(av_name.mUsername);
|
||||
std::string username = av_name.mUsername;
|
||||
if (username.empty())
|
||||
{
|
||||
username = LLCacheName::buildUsername(av_name.mDisplayName);
|
||||
}
|
||||
|
||||
llinfos << "opening web profile for " << username << llendl;
|
||||
std::string url = getProfileURL(username);
|
||||
|
||||
// PROFILES: open in webkit window
|
||||
LLWeb::loadWebURLInternal(url, "", agent_id.asString());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
|
||||
<avatar_icon
|
||||
name="avatar_icon"
|
||||
default_icon_name="Generic_Person_Large"
|
||||
use_draw_context_alpha="false">
|
||||
</avatar_icon>
|
||||
|
|
|
|||
|
|
@ -6,20 +6,24 @@
|
|||
track_color="ScrollbarTrackColor"
|
||||
thumb_color="ScrollbarThumbColor"
|
||||
thickness="15">
|
||||
<up_button image_unselected="ScrollArrow_Up"
|
||||
<up_button name="up_button"
|
||||
image_unselected="ScrollArrow_Up"
|
||||
image_selected="ScrollArrow_Up"
|
||||
scale_image="true"
|
||||
hover_glow_amount="0.35"/>
|
||||
<down_button image_unselected="ScrollArrow_Down"
|
||||
<down_button name="down_button"
|
||||
image_unselected="ScrollArrow_Down"
|
||||
image_selected="ScrollArrow_Down"
|
||||
scale_image="true"
|
||||
hover_glow_amount="0.35"/>
|
||||
<left_button image_unselected="ScrollArrow_Left"
|
||||
<left_button name="left_button"
|
||||
image_unselected="ScrollArrow_Left"
|
||||
image_selected="ScrollArrow_Left"
|
||||
scale_image="true"
|
||||
hover_glow_amount="0.35"/>
|
||||
<right_button image_unselected="ScrollArrow_Right"
|
||||
image_selected="ScrollArrow_Right"
|
||||
scale_image="true"
|
||||
hover_glow_amount="0.35"/>
|
||||
<right_button name="right_button"
|
||||
image_unselected="ScrollArrow_Right"
|
||||
image_selected="ScrollArrow_Right"
|
||||
scale_image="true"
|
||||
hover_glow_amount="0.35"/>
|
||||
</scroll_bar>
|
||||
|
|
|
|||
Loading…
Reference in New Issue