summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/settings.xml13
-rw-r--r--indra/newview/character/avatar_lad.xml2
-rw-r--r--indra/newview/featuretable.txt1
-rw-r--r--indra/newview/featuretable_linux.txt1
-rw-r--r--indra/newview/featuretable_mac.txt1
-rw-r--r--indra/newview/llchathistory.cpp9
-rw-r--r--indra/newview/llchathistory.h1
-rw-r--r--indra/newview/lldrawpoolavatar.cpp8
-rw-r--r--indra/newview/lltexlayer.cpp20
-rw-r--r--indra/newview/lltexlayer.h2
-rw-r--r--indra/newview/lltoast.cpp5
-rw-r--r--indra/newview/llvoavatar.cpp83
-rw-r--r--indra/newview/llvoavatar.h1
-rw-r--r--indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_estate.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml2
17 files changed, 113 insertions, 44 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index e86f50ce20..6204c8047a 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -632,7 +632,18 @@
<key>BlockAvatarAppearanceMessages</key>
<map>
<key>Comment</key>
- <string>Ignore's appearance messages (for simulating Ruth)</string>
+ <string>Ignores appearance messages (for simulating Ruth)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>BlockSomeAvatarAppearanceVisualParams</key>
+ <map>
+ <key>Comment</key>
+ <string>Drop around 50% of VisualParam occurances in appearance messages (for simulating Ruth)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 5efd997ab7..9564236ad2 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -4782,7 +4782,7 @@
group="1"
name="Saddlebags"
wearable="shape"
- edit_grouo="driven"
+ edit_group="driven"
value_min="-.5"
value_max="3">
<param_morph>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index b4add267fe..de4d787d65 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -26,6 +26,7 @@ list all
RenderAnisotropic 1 0
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
+RenderAvatarMaxVisible 1 35
RenderAvatarVP 1 1
RenderCubeMap 1 1
RenderDelayVBUpdate 1 0
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 4fb529ab39..adda7cec4d 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -26,6 +26,7 @@ list all
RenderAnisotropic 1 0
RenderAvatarCloth 1 1
RenderAvatarLODFactor 1 1.0
+RenderAvatarMaxVisible 1 35
RenderAvatarVP 1 1
RenderCubeMap 1 1
RenderDelayVBUpdate 1 0
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index fbc589d3e7..82886d7e2c 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -26,6 +26,7 @@ list all
RenderAnisotropic 1 0
RenderAvatarCloth 0 0
RenderAvatarLODFactor 1 1.0
+RenderAvatarMaxVisible 1 35
RenderAvatarVP 1 0
RenderCubeMap 1 1
RenderDelayVBUpdate 1 0
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index bd14732b4a..0bd03571da 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -846,12 +846,3 @@ void LLChatHistory::draw()
LLUICtrl::draw();
}
-
-void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- bool is_scrolled_to_end = mEditor->scrolledToEnd();
- LLUICtrl::reshape( width, height, called_from_parent );
- // update scroll
- if (is_scrolled_to_end)
- mEditor->setCursorAndScrollToEnd();
-}
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 950b32861b..fa1f2e04a4 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -122,7 +122,6 @@ class LLChatHistory : public LLUICtrl
*/
void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params());
/*virtual*/ void clear();
- /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
private:
std::string mLastFromName;
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 546b60f286..2d0859650a 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -634,7 +634,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
if (!single_avatar && !avatarp->isFullyLoaded() )
{
- if (pass==1 && (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) || LLViewerPartSim::getMaxPartCount() <= 0))
+ if (pass==0 && (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) || LLViewerPartSim::getMaxPartCount() <= 0))
{
// debug code to draw a sphere in place of avatar
gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep);
@@ -646,8 +646,10 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
gGL.translatef((F32)(pos.mV[VX]),
(F32)(pos.mV[VY]),
(F32)(pos.mV[VZ]));
- gGL.scalef(0.15f, 0.15f, 0.3f);
- gSphere.render();
+ gGL.scalef(0.15f, 0.15f, 0.3f);
+
+ gSphere.renderGGL();
+
gGL.popMatrix();
gGL.setColorMask(true, false);
}
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 7290849fca..b13f9e3898 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -87,7 +87,7 @@ LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLTexLayerSet* const owner,
mNeedsUpdate(TRUE),
mNeedsUpload(FALSE),
mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates
- mNeedsLowResUpload(TRUE),
+ mDebugNumLowresUploads(0),
mTexLayerSet(owner)
{
LLTexLayerSetBuffer::sGLByteCount += getSize();
@@ -141,12 +141,12 @@ void LLTexLayerSetBuffer::requestUpload()
// If we requested a new upload but haven't even uploaded
// a low res version of our last upload request, then
// keep the timer ticking instead of resetting it.
- if (mNeedsUpload && mNeedsLowResUpload)
+ if (mNeedsUpload && (mDebugNumLowresUploads == 0))
{
mNeedsUploadTimer.reset();
}
mNeedsUpload = TRUE;
- mNeedsLowResUpload = TRUE;
+ mDebugNumLowresUploads = 0;
mUploadPending = TRUE;
mNeedsUploadTimer.unpause();
}
@@ -292,7 +292,7 @@ BOOL LLTexLayerSetBuffer::isReadyToUpload() const
// If we hit our timeout and have textures available at even lower resolution, then upload.
const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout;
const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
- if (has_lower_lod && is_upload_textures_timeout && mNeedsLowResUpload) return TRUE;
+ if (has_lower_lod && is_upload_textures_timeout) return TRUE;
}
return FALSE;
}
@@ -434,12 +434,18 @@ void LLTexLayerSetBuffer::readBackAndUpload()
if (highest_lod)
{
+ // Got the final LOD for the baked texture.
+ // All done, pause the upload timer so we know how long it took.
mNeedsUpload = FALSE;
mNeedsUploadTimer.pause();
}
else
{
- mNeedsLowResUpload = FALSE;
+ // Got a lower level LOD for the baked texture.
+ // Restart the upload timer.
+ mDebugNumLowresUploads++;
+ mNeedsUploadTimer.unpause();
+ mNeedsUploadTimer.reset();
}
}
else
@@ -2235,11 +2241,11 @@ const std::string LLTexLayerSetBuffer::dumpTextureInfo() const
if (!isAgentAvatarValid()) return "";
const BOOL is_high_res = !mNeedsUpload;
- const BOOL is_low_res = !mNeedsLowResUpload;
+ const U32 num_low_res = mDebugNumLowresUploads;
const U32 upload_time = (U32)mNeedsUploadTimer.getElapsedTimeF32();
const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(mTexLayerSet);
std::string text = llformat("[ HiRes:%d LoRes:%d Timer:%d ] %s",
- is_high_res, is_low_res, upload_time,
+ is_high_res, num_low_res, upload_time,
local_texture_info.c_str());
return text;
}
diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h
index 8f386b5a19..313c5f24e1 100644
--- a/indra/newview/lltexlayer.h
+++ b/indra/newview/lltexlayer.h
@@ -360,7 +360,7 @@ private:
BOOL mNeedsUpdate; // Whether we need to update our baked textures
BOOL mNeedsUpload; // Whether we need to send our baked textures to the server
- BOOL mNeedsLowResUpload; // Whether we have sent a lowres version of our baked textures to the server
+ U32 mDebugNumLowresUploads; // Number of times we've sent a lowres version of our baked textures to the server
BOOL mUploadPending; // Whether we have received back the new baked textures
LLUUID mUploadID; // Identifies the current upload process (null if none). Used to avoid overlaps (eg, when the user rapidly makes two changes outside of Face Edit)
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 568cd4cb19..9abfab300c 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -271,7 +271,10 @@ void LLToast::setVisible(BOOL show)
{
mTimer->start();
}
- LLModalDialog::setFrontmost(FALSE);
+ if (!getVisible())
+ {
+ LLModalDialog::setFrontmost(FALSE);
+ }
}
else
{
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 7a232afba6..8456d13931 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6686,6 +6686,41 @@ void LLVOAvatar::onFirstTEMessageReceived()
}
//-----------------------------------------------------------------------------
+// bool visualParamWeightsAreDefault()
+//-----------------------------------------------------------------------------
+bool LLVOAvatar::visualParamWeightsAreDefault()
+{
+ bool rtn = true;
+
+ bool is_wearing_skirt = isWearingWearableType(LLWearableType::WT_SKIRT);
+ for (LLVisualParam *param = getFirstVisualParam();
+ param;
+ param = getNextVisualParam())
+ {
+ if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)
+ {
+ LLViewerVisualParam* vparam = dynamic_cast<LLViewerVisualParam*>(param);
+ llassert(vparam);
+ bool is_skirt_param = vparam &&
+ LLWearableType::WT_SKIRT == vparam->getWearableType();
+ if (param->getWeight() != param->getDefaultWeight() &&
+ // we have to not care whether skirt weights are default, if we're not actually wearing a skirt
+ (is_wearing_skirt || !is_skirt_param))
+ {
+ //llinfos << "param '" << param->getName() << "'=" << param->getWeight() << " which differs from default=" << param->getDefaultWeight() << llendl;
+ rtn = false;
+ break;
+ }
+ }
+ }
+
+ //llinfos << "params are default ? " << int(rtn) << llendl;
+
+ return rtn;
+}
+
+
+//-----------------------------------------------------------------------------
// processAvatarAppearance()
//-----------------------------------------------------------------------------
void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
@@ -6753,16 +6788,17 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
{
releaseComponentTextures();
}
-
-
+
// parse visual params
S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_VisualParam);
- if( num_blocks > 1 )
+ bool drop_visual_params_debug = gSavedSettings.getBOOL("BlockSomeAvatarAppearanceVisualParams") && (random()%2)==0; // pretend that ~12% of AvatarAppearance messages arrived without a VisualParam block, for testing
+ if( num_blocks > 1 && !drop_visual_params_debug)
{
BOOL params_changed = FALSE;
BOOL interp_params = FALSE;
LLVisualParam* param = getFirstVisualParam();
+ llassert(param); // if this ever fires, we should do the same as when num_blocks<=1
if (!param)
{
llwarns << "No visual params!" << llendl;
@@ -6778,8 +6814,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
if( !param )
{
- llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl;
- return;
+ // more visual params supplied than expected - just process what we know about
+ break;
}
U8 value;
@@ -6804,14 +6840,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
}
}
- while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) )
+ const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE);
+ if (num_blocks != expected_tweakable_count)
{
- param = getNextVisualParam();
- }
- if( param )
- {
- llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl;
- return;
+ llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << llendl;
}
if (params_changed)
@@ -6828,16 +6860,37 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
updateSexDependentLayerSets( FALSE );
}
}
+
+ llassert( getSex() == ((getVisualParamWeight( "male" ) > 0.5f) ? SEX_MALE : SEX_FEMALE) );
}
else
{
- llwarns << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
+ // AvatarAppearance message arrived without visual params
+ if (drop_visual_params_debug)
+ {
+ llinfos << "Debug-faked lack of parameters on AvatarAppearance for object: " << getID() << llendl;
+ }
+ else
+ {
+ llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
+ }
+
+ // this isn't really a problem if we already have a non-default shape
+ if (visualParamWeightsAreDefault())
+ {
+ // re-request appearance, hoping that it comes back with a shape next time
+ llinfos << "Re-requesting AvatarAppearance for object: " << getID() << llendl;
+ LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID());
+ }
+ else
+ {
+ llinfos << "That's okay, we already have a non-default shape for object: " << getID() << llendl;
+ // we don't really care.
+ }
}
setCompositeUpdatesEnabled( TRUE );
- llassert( getSex() == ((getVisualParamWeight( "male" ) > 0.5f) ? SEX_MALE : SEX_FEMALE) );
-
// If all of the avatars are completely baked, release the global image caches to conserve memory.
LLVOAvatar::cullAvatarsByPixelArea();
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 3c940e03c0..b30cce09f6 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -249,6 +249,7 @@ public:
//--------------------------------------------------------------------
public:
BOOL isFullyLoaded() const;
+ bool visualParamWeightsAreDefault();
protected:
virtual BOOL getIsCloud();
BOOL updateIsFullyLoaded();
diff --git a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml
index afd9001df0..5e7442b877 100644
--- a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="clothing_list_button_bar_panel">
- <button label="Permuter" name="switch_btn"/>
+ <button label="Changer" name="switch_btn"/>
<button label="Acheter &gt;" name="bodyparts_shop_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml
index 24cb92dde7..0b58a4e40b 100644
--- a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="clothing_list_button_bar_panel">
- <button label="Ajouter +" name="add_btn"/>
+ <button label="Ajout +" name="add_btn"/>
<button label="Acheter &gt;" name="clothing_shop_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
index 2c12547d61..fb650ff646 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
@@ -73,6 +73,6 @@ domaine.
<button label="?" name="ban_resident_help"/>
<button label="Ajouter..." name="add_banned_avatar_btn"/>
<button label="Supprimer..." name="remove_banned_avatar_btn"/>
- <button label="Envoyer un message au domaine..." name="message_estate_btn"/>
- <button label="Éjecter un résident du domaine..." name="kick_user_from_estate_btn"/>
+ <button label="Message au domaine..." name="message_estate_btn"/>
+ <button label="Éjecter du domaine..." name="kick_user_from_estate_btn"/>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 5d162eb80f..1ac7677b07 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -639,7 +639,7 @@ L$ が不足しているのでこのグループに参加することができ
次のファイルのエンコードができません: [FILE]
</notification>
<notification name="CorruptedProtectedDataStore">
- あなたの保護されたデータを読みとることが出来ないためリセットされます。
+ 保護されているデータを読みとることが出来ないためリセットされます。
ネットワーク設定を変更すると起こることがあります。
<usetemplate name="okbutton" yestext="OK"/>
</notification>