Merge
commit
a1a43f7942
|
|
@ -91,15 +91,16 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)
|
|||
S32 result;
|
||||
while (getNextFileInDir(dirname, mask, filename, FALSE))
|
||||
{
|
||||
if ((filename == ".") || (filename == ".."))
|
||||
fullpath = dirname;
|
||||
fullpath += getDirDelimiter();
|
||||
fullpath += filename;
|
||||
|
||||
if(LLFile::isdir(fullpath))
|
||||
{
|
||||
// skipping directory traversal filenames
|
||||
count++;
|
||||
continue;
|
||||
}
|
||||
fullpath = dirname;
|
||||
fullpath += getDirDelimiter();
|
||||
fullpath += filename;
|
||||
|
||||
S32 retry_count = 0;
|
||||
while (retry_count < 5)
|
||||
|
|
|
|||
|
|
@ -104,6 +104,10 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
|
|||
LLViewerObject* objectp = gObjectList.findObject(source_id);
|
||||
std::string floater_label;
|
||||
|
||||
// Handle /me messages.
|
||||
std::string prefix = utf8mesg.substr(0, 4);
|
||||
std::string message = (prefix == "/me " || prefix == "/me'") ? user_name + utf8mesg.substr(3) : utf8mesg;
|
||||
|
||||
if (objectp)
|
||||
{
|
||||
objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLViewerTexture::BOOST_UI));
|
||||
|
|
@ -121,14 +125,14 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:
|
|||
LLFloaterScriptDebugOutput* floaterp = LLFloaterReg::getTypedInstance<LLFloaterScriptDebugOutput>("script_debug_output", LLUUID::null);
|
||||
if (floaterp)
|
||||
{
|
||||
floaterp->addLine(utf8mesg, user_name, color);
|
||||
floaterp->addLine(message, user_name, color);
|
||||
}
|
||||
|
||||
// add to specific script instance floater
|
||||
floaterp = LLFloaterReg::getTypedInstance<LLFloaterScriptDebugOutput>("script_debug_output", source_id);
|
||||
if (floaterp)
|
||||
{
|
||||
floaterp->addLine(utf8mesg, floater_label, color);
|
||||
floaterp->addLine(message, floater_label, color);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -697,6 +697,7 @@ void LLPanelStandStopFlying::onStandButtonClick()
|
|||
gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
|
||||
|
||||
setFocus(FALSE); // EXT-482
|
||||
mStandButton->setVisible(FALSE); // force visibility changing to avoid seeing Stand & Move buttons at once.
|
||||
}
|
||||
|
||||
void LLPanelStandStopFlying::onStopFlyingButtonClick()
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, c
|
|||
|
||||
bool LLSpeaker::isInVoiceChannel()
|
||||
{
|
||||
return mStatus == LLSpeaker::STATUS_VOICE_ACTIVE || mStatus == LLSpeaker::STATUS_MUTED;
|
||||
return mStatus <= LLSpeaker::STATUS_VOICE_ACTIVE || mStatus == LLSpeaker::STATUS_MUTED;
|
||||
}
|
||||
|
||||
LLSpeakerUpdateModeratorEvent::LLSpeakerUpdateModeratorEvent(LLSpeaker* source)
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@
|
|||
#include "llkeyframewalkmotion.h"
|
||||
#include "llmutelist.h"
|
||||
#include "llmoveview.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llquantize.h"
|
||||
#include "llregionhandle.h"
|
||||
#include "llresmgr.h"
|
||||
|
|
@ -101,6 +102,8 @@
|
|||
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
#define DISPLAY_AVATAR_LOAD_TIMES
|
||||
|
||||
using namespace LLVOAvatarDefines;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -656,6 +659,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
|
|||
mNameMute(FALSE),
|
||||
mRenderGroupTitles(sRenderGroupTitles),
|
||||
mNameAppearance(FALSE),
|
||||
mNameCloud(FALSE),
|
||||
mFirstTEMessageReceived( FALSE ),
|
||||
mFirstAppearanceMessageReceived( FALSE ),
|
||||
mCulled( FALSE ),
|
||||
|
|
@ -2764,25 +2768,20 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
|||
|
||||
if (mNameText.notNull() && firstname && lastname)
|
||||
{
|
||||
BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end();
|
||||
BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end();
|
||||
BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end();
|
||||
BOOL is_muted;
|
||||
if (isSelf())
|
||||
{
|
||||
is_muted = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
is_muted = LLMuteList::getInstance()->isMuted(getID());
|
||||
}
|
||||
const BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY) != mSignaledAnimations.end();
|
||||
const BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end();
|
||||
const BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end();
|
||||
const BOOL is_muted = isSelf() ? FALSE : LLMuteList::getInstance()->isMuted(getID());
|
||||
const BOOL is_cloud = getIsCloud();
|
||||
|
||||
if (mNameString.empty() ||
|
||||
new_name ||
|
||||
(!title && !mTitle.empty()) ||
|
||||
(title && mTitle != title->getString()) ||
|
||||
(is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute)
|
||||
|| is_appearance != mNameAppearance)
|
||||
|| is_appearance != mNameAppearance
|
||||
|| is_cloud != mNameCloud
|
||||
)
|
||||
{
|
||||
std::string line;
|
||||
if (!sRenderGroupTitles)
|
||||
|
|
@ -2836,7 +2835,12 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
|||
}
|
||||
line += ")";
|
||||
}
|
||||
if (is_appearance)
|
||||
if (is_cloud)
|
||||
{
|
||||
line += "\n";
|
||||
line += "(" + LLTrans::getString("LoadingData") + ")";
|
||||
}
|
||||
else if (is_appearance)
|
||||
{
|
||||
line += "\n";
|
||||
line += LLTrans::getString("AvatarEditingAppearance");
|
||||
|
|
@ -2845,6 +2849,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
|
|||
mNameBusy = is_busy;
|
||||
mNameMute = is_muted;
|
||||
mNameAppearance = is_appearance;
|
||||
mNameCloud = is_cloud;
|
||||
mTitle = title ? title->getString() : "";
|
||||
LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR);
|
||||
mNameString = utf8str_to_wstring(line);
|
||||
|
|
@ -5812,27 +5817,29 @@ BOOL LLVOAvatar::isVisible() const
|
|||
&& (mDrawable->isVisible() || mIsDummy);
|
||||
}
|
||||
|
||||
// call periodically to keep isFullyLoaded up to date.
|
||||
// returns true if the value has changed.
|
||||
BOOL LLVOAvatar::updateIsFullyLoaded()
|
||||
// Determine if we have enough avatar data to render
|
||||
BOOL LLVOAvatar::getIsCloud()
|
||||
{
|
||||
// a "heuristic" to determine if we have enough avatar data to render
|
||||
// (to avoid rendering a "Ruth" - DEV-3168)
|
||||
BOOL loading = FALSE;
|
||||
|
||||
// do we have a shape?
|
||||
// Do we have a shape?
|
||||
if (visualParamWeightsAreDefault())
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!isTextureDefined(TEX_LOWER_BAKED) ||
|
||||
!isTextureDefined(TEX_UPPER_BAKED) ||
|
||||
!isTextureDefined(TEX_HEAD_BAKED))
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// call periodically to keep isFullyLoaded up to date.
|
||||
// returns true if the value has changed.
|
||||
BOOL LLVOAvatar::updateIsFullyLoaded()
|
||||
{
|
||||
const BOOL loading = getIsCloud();
|
||||
updateRuthTimer(loading);
|
||||
return processFullyLoadedChange(loading);
|
||||
}
|
||||
|
|
@ -5847,6 +5854,7 @@ void LLVOAvatar::updateRuthTimer(bool loading)
|
|||
if (mPreviousFullyLoaded)
|
||||
{
|
||||
mRuthTimer.reset();
|
||||
mRuthDebugTimer.reset();
|
||||
}
|
||||
|
||||
const F32 LOADING_TIMEOUT = 120.f;
|
||||
|
|
@ -5875,7 +5883,17 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
|
|||
|
||||
mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > PAUSE);
|
||||
|
||||
|
||||
#ifdef DISPLAY_AVATAR_LOAD_TIMES
|
||||
if (!mPreviousFullyLoaded && !loading && mFullyLoaded)
|
||||
{
|
||||
llinfos << "Avatar '" << getFullname() << "' resolved in " << mRuthDebugTimer.getElapsedTimeF32() << " seconds." << llendl;
|
||||
LLSD args;
|
||||
args["TIME"] = llformat("%d",(U32)mRuthDebugTimer.getElapsedTimeF32());
|
||||
args["NAME"] = getFullname();
|
||||
LLNotificationsUtil::add("AvatarRezNotification",args);
|
||||
}
|
||||
#endif
|
||||
|
||||
// did our loading state "change" from last call?
|
||||
const S32 UPDATE_RATE = 30;
|
||||
BOOL changed =
|
||||
|
|
|
|||
|
|
@ -247,7 +247,8 @@ public:
|
|||
public:
|
||||
BOOL isFullyLoaded() const;
|
||||
protected:
|
||||
virtual BOOL updateIsFullyLoaded();
|
||||
virtual BOOL getIsCloud();
|
||||
BOOL updateIsFullyLoaded();
|
||||
BOOL processFullyLoadedChange(bool loading);
|
||||
void updateRuthTimer(bool loading);
|
||||
F32 calcMorphAmount();
|
||||
|
|
@ -258,6 +259,7 @@ private:
|
|||
S32 mFullyLoadedFrameCounter;
|
||||
LLFrameTimer mFullyLoadedTimer;
|
||||
LLFrameTimer mRuthTimer;
|
||||
LLFrameTimer mRuthDebugTimer; // For tracking how long it takes for av to rez
|
||||
|
||||
/** State
|
||||
** **
|
||||
|
|
@ -828,6 +830,7 @@ private:
|
|||
BOOL mNameBusy;
|
||||
BOOL mNameMute;
|
||||
BOOL mNameAppearance;
|
||||
BOOL mNameCloud;
|
||||
BOOL mRenderGroupTitles;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1697,22 +1697,20 @@ void LLVOAvatarSelf::dumpTotalLocalTextureByteCount()
|
|||
llinfos << "Total Avatar LocTex GL:" << (gl_bytes/1024) << "KB" << llendl;
|
||||
}
|
||||
|
||||
BOOL LLVOAvatarSelf::updateIsFullyLoaded()
|
||||
BOOL LLVOAvatarSelf::getIsCloud()
|
||||
{
|
||||
BOOL loading = FALSE;
|
||||
|
||||
// do we have our body parts?
|
||||
if (gAgentWearables.getWearableCount(WT_SHAPE) == 0 ||
|
||||
gAgentWearables.getWearableCount(WT_HAIR) == 0 ||
|
||||
gAgentWearables.getWearableCount(WT_EYES) == 0 ||
|
||||
gAgentWearables.getWearableCount(WT_SKIN) == 0)
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!isTextureDefined(TEX_HAIR, 0))
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!mPreviousFullyLoaded)
|
||||
|
|
@ -1720,13 +1718,13 @@ BOOL LLVOAvatarSelf::updateIsFullyLoaded()
|
|||
if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_LOWER].mTexLayerSet) &&
|
||||
(!isTextureDefined(TEX_LOWER_BAKED, 0)))
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_UPPER].mTexLayerSet) &&
|
||||
(!isTextureDefined(TEX_UPPER_BAKED, 0)))
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
|
||||
|
|
@ -1734,23 +1732,23 @@ BOOL LLVOAvatarSelf::updateIsFullyLoaded()
|
|||
if (i == BAKED_SKIRT && !isWearingWearableType(WT_SKIRT))
|
||||
continue;
|
||||
|
||||
BakedTextureData& texture_data = mBakedTextureDatas[i];
|
||||
const BakedTextureData& texture_data = mBakedTextureDatas[i];
|
||||
if (!isTextureDefined(texture_data.mTextureIndex, 0))
|
||||
continue;
|
||||
|
||||
// Check for the case that texture is defined but not sufficiently loaded to display anything.
|
||||
LLViewerTexture* baked_img = getImage( texture_data.mTextureIndex, 0 );
|
||||
const LLViewerTexture* baked_img = getImage( texture_data.mTextureIndex, 0 );
|
||||
if (!baked_img || !baked_img->hasGLTexture())
|
||||
{
|
||||
loading = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return processFullyLoadedChange(loading);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
const LLUUID& LLVOAvatarSelf::grabLocalTexture(ETextureIndex type, U32 index) const
|
||||
{
|
||||
if (canGrabLocalTexture(type, index))
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ public:
|
|||
// Loading state
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
/*virtual*/ BOOL updateIsFullyLoaded();
|
||||
/*virtual*/ BOOL getIsCloud();
|
||||
private:
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<menu name="menu_group_plus"
|
||||
left="0" bottom="0" visible="false"
|
||||
mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="false">
|
||||
mouse_opaque="false" opaque="true" color="MenuDefaultBgColor">
|
||||
<menu_item_call
|
||||
label="View Info"
|
||||
name="View Info">
|
||||
|
|
|
|||
|
|
@ -5968,6 +5968,12 @@ The button will be shown when there is enough space for it.
|
|||
Drag items from inventory onto a person in the resident picker
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="AvatarRezNotification"
|
||||
type="notifytip">
|
||||
Avatar '[NAME]' rezzed in [TIME] seconds.
|
||||
</notification>
|
||||
|
||||
<global name="UnsupportedCPU">
|
||||
- Your CPU speed does not meet the minimum requirements.
|
||||
|
|
|
|||
|
|
@ -477,7 +477,7 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
|
|||
label="Share"
|
||||
layout="topleft"
|
||||
name="share_btn"
|
||||
width="85" />
|
||||
width="62" />
|
||||
<button
|
||||
follows="bottom|left"
|
||||
left_pad="3"
|
||||
|
|
|
|||
|
|
@ -47,13 +47,13 @@ Jeżeli szukasz ludzi, z którymi można się spotkać, kliknij tutaj [secondlif
|
|||
</panel>
|
||||
</tab_container>
|
||||
<panel name="button_bar">
|
||||
<button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
|
||||
<button label="IM" name="im_btn" tool_tip="Rozpocznij rozmowę prywatną (IM)"/>
|
||||
<button label="Zadzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
|
||||
<button label="Podziel się" name="share_btn"/>
|
||||
<button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleportację"/>
|
||||
<button label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie"/>
|
||||
<button label="Konferencja Grupowa" name="chat_btn" tool_tip="Rozpocznij konferencę"/>
|
||||
<button label="Rozmowa Głosowa" name="group_call_btn" tool_tip="Rozmowa Głosowa w tej Grupie"/>
|
||||
<button width="55" label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
|
||||
<button width="35" label="IM" name="im_btn" tool_tip="Rozpocznij rozmowę prywatną (IM)"/>
|
||||
<button width="62" label="Zadzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
|
||||
<button width="72" label="Podziel się" name="share_btn"/>
|
||||
<button width="70" label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleportację"/>
|
||||
<button width="69" label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie"/>
|
||||
<button width="124" label="Konferencja Grupowa" name="chat_btn" tool_tip="Rozpocznij konferencę"/>
|
||||
<button width="108" label="Rozmowa Głosowa" name="group_call_btn" tool_tip="Rozmowa Głosowa w tej Grupie"/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -254,9 +254,9 @@
|
|||
<key>windows</key>
|
||||
<map>
|
||||
<key>md5sum</key>
|
||||
<string>53e5ab7affff7121a5af2f82b4d58b54</string>
|
||||
<string>78ccac8aaf8ea5bec482dfbcdbeb1651</string>
|
||||
<key>url</key>
|
||||
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.19.6-windows-20091016.tar.bz2</uri>
|
||||
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.19.6-windows-20100414.tar.bz2</uri>
|
||||
</map>
|
||||
</map>
|
||||
</map>
|
||||
|
|
@ -948,9 +948,9 @@ anguage Infrstructure (CLI) international standard</string>
|
|||
<key>darwin</key>
|
||||
<map>
|
||||
<key>md5sum</key>
|
||||
<string>7d75751cbd8786ea4d710b50b5931b9b</string>
|
||||
<string>1956228a93537f250b92f2929fa4ea40</string>
|
||||
<key>url</key>
|
||||
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+cookies-darwin-20100402.tar.bz2</uri>
|
||||
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+cookies-darwin-20100415.tar.bz2</uri>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
|
|
|
|||
Loading…
Reference in New Issue