svn merge -r 64079:64548 svn+ssh://svn/svn/linden/branches/maintenance into release
parent
ce5e13630c
commit
e5124431b5
|
|
@ -5,7 +5,7 @@ received from them. To see more about these contributions, visit
|
|||
http://jira.secondlife.com/ and enter the issue identifier.
|
||||
|
||||
Able Whitman - VWR-650
|
||||
Alissa Sabre - VWR-81, VWR-83, VWR-171, VWR-251, VWR-414, VWR-415, VWR-459, VWR-606, VWR-652
|
||||
Alissa Sabre - VWR-81, VWR-83, VWR-171, VWR-251, VWR-414, VWR-415, VWR-459, VWR-606, VWR-652, VWR-1351, VWR-1410
|
||||
Argent Stonecutter - VWR-68
|
||||
Benja Kepler - VWR-746
|
||||
Blakar Ogre - VWR-881
|
||||
|
|
@ -17,15 +17,17 @@ Duckless Vandyke - VWR-383
|
|||
Dylan Haskell - VWR-72
|
||||
Dzonatas Sol - VWR-198, VWR-878
|
||||
Eddy Stryker - VWR-15, VWR-23
|
||||
Fremont Cunningham - VWR-1147
|
||||
Gigs Taggart - VWR-71, VWR-326, VWR-1217
|
||||
Ginko Bayliss - VWR-4
|
||||
Hikkoshi Sakai - VWR-429
|
||||
Hiro Sommambulist - VWR-66, VWR-97, VWR-100, VWR-105, VWR-108, VWR-118, VWR-132, VWR-136, VWR-143
|
||||
Iskar Ariantho - VWR-1223
|
||||
Jacek Antonelli - VWR-165, VWR-188, VWR-427, VWR-597
|
||||
Joghert LeSabre - VWR-64
|
||||
Kage Pixel - VWR-11
|
||||
Kunnis Basiat - VWR-82
|
||||
Nicholaz Beresford - VWR-132, VWR-176, VWR-793, VWR-794, VWR-802, VWR-803, VWR-804, VWR-805, VWR-808, VWR-809, VWR-810, VWR-823, VWR-869, VWR-870, VWR-871, VWR-873, VWR-908, VWR-966
|
||||
Nicholaz Beresford - VWR-132, VWR-176, VWR-793, VWR-794, VWR-802, VWR-803, VWR-804, VWR-805, VWR-808, VWR-809, VWR-810, VWR-823, VWR-869, VWR-870, VWR-871, VWR-873, VWR-908, VWR-966, VWR-1410, VWR-1418
|
||||
Paul Churchill - VWR-20
|
||||
Paula Innis - VWR-30, VWR-1049
|
||||
Peekay Semyorka - VWR-7, VWR-19, VWR-49, VWR-79
|
||||
|
|
@ -38,6 +40,7 @@ Still Defiant - VWR-207, VWR-446
|
|||
Strife Onizuka - SVC-9, VWR-74, VWR-85, VWR-148
|
||||
tenebrous pau - VWR-247
|
||||
TBBle Kurosawa - VWR-938, VWR-941, VWR-944
|
||||
Tharax Ferraris - VWR-605
|
||||
Zi Ree - VWR-671, VWR-682, VWR-1140
|
||||
Zipherius Turas - VWR-76, VWR-77
|
||||
|
||||
|
|
|
|||
|
|
@ -418,6 +418,10 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
up.setVec(eye_look_at % left);
|
||||
|
||||
target_eye_rot = LLQuaternion(eye_look_at, left, up);
|
||||
// convert target rotation to head-local coordinates
|
||||
target_eye_rot *= ~mHeadJoint->getWorldRotation();
|
||||
// constrain target orientation to be in front of avatar's face
|
||||
target_eye_rot.constrain(EYE_ROT_LIMIT_ANGLE);
|
||||
|
||||
// calculate vergence
|
||||
F32 interocular_dist = (mLeftEyeState.getJoint()->getWorldPosition() - mRightEyeState.getJoint()->getWorldPosition()).magVec();
|
||||
|
|
@ -426,7 +430,7 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
}
|
||||
else
|
||||
{
|
||||
target_eye_rot = mHeadJoint->getWorldRotation();
|
||||
target_eye_rot = LLQuaternion::DEFAULT;
|
||||
vergence = 0.f;
|
||||
}
|
||||
|
||||
|
|
@ -468,18 +472,8 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
vergence_quat.transQuat();
|
||||
right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot;
|
||||
|
||||
//set final eye rotations
|
||||
// start with left
|
||||
LLQuaternion tQw = mLeftEyeState.getJoint()->getParent()->getWorldRotation();
|
||||
LLQuaternion tQh = left_eye_rot * ~tQw;
|
||||
tQh.constrain(EYE_ROT_LIMIT_ANGLE);
|
||||
mLeftEyeState.setRotation( tQh );
|
||||
|
||||
// now do right eye
|
||||
tQw = mRightEyeState.getJoint()->getParent()->getWorldRotation();
|
||||
tQh = right_eye_rot * ~tQw;
|
||||
tQh.constrain(EYE_ROT_LIMIT_ANGLE);
|
||||
mRightEyeState.setRotation( tQh );
|
||||
mLeftEyeState.setRotation( left_eye_rot );
|
||||
mRightEyeState.setRotation( right_eye_rot );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ public:
|
|||
void setScale( const LLVector3& scale ) { llassert(mUsage & SCALE); mScale = scale; }
|
||||
|
||||
// get/set priority
|
||||
const LLJoint::JointPriority getPriority() { return mPriority; }
|
||||
LLJoint::JointPriority getPriority() { return mPriority; }
|
||||
void setPriority( const LLJoint::JointPriority priority ) { mPriority = priority; }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ BOOL LLMotionController::startMotion(const LLUUID &id, F32 start_offset)
|
|||
{
|
||||
if (motion->isStopped()) // motion has been stopped
|
||||
{
|
||||
deactivateMotion(motion);
|
||||
deactivateMotion(motion, false);
|
||||
}
|
||||
else if (mTime < motion->mSendStopTimestamp) // motion is still active
|
||||
{
|
||||
|
|
@ -376,7 +376,7 @@ BOOL LLMotionController::stopMotionLocally(const LLUUID &id, BOOL stop_immediate
|
|||
|
||||
if (stop_immediate)
|
||||
{
|
||||
deactivateMotion(motion);
|
||||
deactivateMotion(motion, false);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -472,7 +472,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty
|
|||
{
|
||||
if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration())
|
||||
{
|
||||
deactivateMotion(motionp);
|
||||
deactivateMotion(motionp, false);
|
||||
}
|
||||
else if (motionp->isStopped() && mTime > motionp->getStopTime())
|
||||
{
|
||||
|
|
@ -526,8 +526,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty
|
|||
{
|
||||
if (motionp->isStopped() && mTime > motionp->getStopTime() + motionp->getEaseOutDuration())
|
||||
{
|
||||
posep->setWeight(0.f);
|
||||
deactivateMotion(motionp);
|
||||
deactivateMotion(motionp, true);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
|
@ -553,8 +552,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty
|
|||
}
|
||||
else
|
||||
{
|
||||
posep->setWeight(0.f);
|
||||
deactivateMotion(motionp);
|
||||
deactivateMotion(motionp, true);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
@ -802,8 +800,15 @@ BOOL LLMotionController::activateMotion(LLMotion *motion, F32 time)
|
|||
//-----------------------------------------------------------------------------
|
||||
// deactivateMotion()
|
||||
//-----------------------------------------------------------------------------
|
||||
BOOL LLMotionController::deactivateMotion(LLMotion *motion)
|
||||
BOOL LLMotionController::deactivateMotion(LLMotion *motion, bool remove_weight)
|
||||
{
|
||||
if( remove_weight )
|
||||
{
|
||||
// immediately remove pose weighting instead of letting it time out
|
||||
LLPose *posep = motion->getPose();
|
||||
posep->setWeight(0.f);
|
||||
}
|
||||
|
||||
motion->deactivate();
|
||||
mActiveMotions.remove(motion);
|
||||
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ protected:
|
|||
void deleteAllMotions();
|
||||
void addLoadedMotion(LLMotion *motion);
|
||||
BOOL activateMotion(LLMotion *motion, F32 time);
|
||||
BOOL deactivateMotion(LLMotion *motion);
|
||||
BOOL deactivateMotion(LLMotion *motion, bool remove_weight);
|
||||
void updateRegularMotions();
|
||||
void updateAdditiveMotions();
|
||||
void resetJointSignatures();
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public:
|
|||
virtual void stopAnimating(BOOL set_by_user);
|
||||
|
||||
// Interface methods
|
||||
const S32 getID() { return mID; }
|
||||
S32 getID() { return mID; }
|
||||
void setID(S32 id) { llassert(!mInfo); mID = id; }
|
||||
|
||||
const LLString& getName() const { return mInfo->mName; }
|
||||
|
|
@ -100,7 +100,7 @@ public:
|
|||
void setMaxDisplayName(const char* s) { mInfo->mMaxName = s; }
|
||||
void setMinDisplayName(const char* s) { mInfo->mMinName = s; }
|
||||
|
||||
const EVisualParamGroup getGroup() { return mInfo->mGroup; }
|
||||
EVisualParamGroup getGroup() { return mInfo->mGroup; }
|
||||
F32 getMinWeight() { return mInfo->mMinWeight; }
|
||||
F32 getMaxWeight() { return mInfo->mMaxWeight; }
|
||||
F32 getDefaultWeight() { return mInfo->mDefaultWeight; }
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
const U32 operator[](std::string str)
|
||||
U32 operator[](std::string str)
|
||||
{
|
||||
std::map<const std::string, const U32>::iterator itor;
|
||||
itor = mEnumMap.find(str);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@
|
|||
* $License$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "metaclass.h"
|
||||
|
||||
#include "metaproperty.h"
|
||||
#include "reflective.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@
|
|||
* $License$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "metaproperty.h"
|
||||
|
||||
#include "metaclass.h"
|
||||
|
||||
LLMetaProperty::LLMetaProperty(const std::string& name, const LLMetaClass& object_class) :
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
* Copyright (c) 2006-$CurrentYear$, Linden Research, Inc.
|
||||
* $License$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "reflective.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ public:
|
|||
const char* getMusicURL() const { return mMusicURL.c_str(); }
|
||||
const char* getMediaURL() const { return mMediaURL.c_str(); }
|
||||
const LLUUID& getMediaID() const { return mMediaID; }
|
||||
const U8 getMediaAutoScale() const { return mMediaAutoScale; }
|
||||
U8 getMediaAutoScale() const { return mMediaAutoScale; }
|
||||
S32 getLocalID() const { return mLocalID; }
|
||||
const LLUUID& getOwnerID() const { return mOwnerID; }
|
||||
const LLUUID& getGroupID() const { return mGroupID; }
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ const U32 PF_ALLOW_GROUP_OBJECT_ENTRY = 1 << 28; // Only allow group (and owner)
|
|||
const U32 PF_ALLOW_VOICE_CHAT = 1 << 29; // Allow residents to use voice chat on this parcel
|
||||
const U32 PF_USE_ESTATE_VOICE_CHAN = 1 << 30;
|
||||
|
||||
const U32 PF_RESERVED = 1 << 31;
|
||||
const U32 PF_RESERVED = 1U << 31;
|
||||
|
||||
// If any of these are true the parcel is restricting access in some maner.
|
||||
const U32 PF_USE_RESTRICTED_ACCESS = PF_USE_ACCESS_GROUP
|
||||
|
|
|
|||
|
|
@ -822,7 +822,7 @@ public:
|
|||
U8 getPathType() const { return mPathp->mParams.getCurveType(); }
|
||||
S32 getNumFaces() const { return (S32)mProfilep->mFaces.size(); }
|
||||
S32 getNumVolumeFaces() const { return mNumVolumeFaces; }
|
||||
const F32 getDetail() const { return mDetail; }
|
||||
F32 getDetail() const { return mDetail; }
|
||||
const LLVolumeParams & getParams() const { return mParams; }
|
||||
LLVolumeParams getCopyOfParams() const { return mParams; }
|
||||
const LLProfile& getProfile() const { return *mProfilep; }
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class LLColor4
|
|||
F32 magVec() const; // Returns magnitude of LLColor4
|
||||
F32 magVecSquared() const; // Returns magnitude squared of LLColor4
|
||||
F32 normVec(); // Normalizes and returns the magnitude of LLColor4
|
||||
const BOOL isOpaque() { return mV[VALPHA] == 1.f; }
|
||||
BOOL isOpaque() { return mV[VALPHA] == 1.f; }
|
||||
|
||||
F32 operator[](int idx) const { return mV[idx]; }
|
||||
F32 &operator[](int idx) { return mV[idx]; }
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ const U32 TELEPORT_FLAGS_911 = 1 << 10;
|
|||
const U32 TELEPORT_FLAGS_DISABLE_CANCEL = 1 << 11; // Used for llTeleportAgentHome()
|
||||
const U32 TELEPORT_FLAGS_VIA_REGION_ID = 1 << 12;
|
||||
const U32 TELEPORT_FLAGS_IS_FLYING = 1 << 13;
|
||||
const U32 TELEPORT_FLAGS_SHOW_RESET_HOME = 1 << 14;
|
||||
|
||||
const U32 TELEPORT_FLAGS_MASK_VIA = TELEPORT_FLAGS_VIA_LURE
|
||||
| TELEPORT_FLAGS_VIA_LANDMARK
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ public:
|
|||
|
||||
// get functions
|
||||
EMachineType getMachineType() const { return mMachineType; }
|
||||
const U32 getMachineIP() const { return mHost.getAddress(); }
|
||||
const S32 getMachinePort() const { return mHost.getPort(); }
|
||||
U32 getMachineIP() const { return mHost.getAddress(); }
|
||||
S32 getMachinePort() const { return mHost.getPort(); }
|
||||
const LLHost &getMachineHost() const { return mHost; }
|
||||
// The control port is the listen port of the parent process that
|
||||
// launched this machine. 0 means none or not known.
|
||||
|
|
|
|||
|
|
@ -271,8 +271,9 @@ S32 start_net(S32& socket_out, int& nPort)
|
|||
|
||||
void end_net(S32& socket_out)
|
||||
{
|
||||
if (socket_out < 0)
|
||||
if (socket_out >= 0)
|
||||
{
|
||||
shutdown(socket_out, SD_BOTH);
|
||||
closesocket(socket_out);
|
||||
}
|
||||
WSACleanup();
|
||||
|
|
@ -443,7 +444,7 @@ S32 start_net(S32& socket_out, int& nPort)
|
|||
|
||||
void end_net(S32& socket_out)
|
||||
{
|
||||
if (socket_out < 0)
|
||||
if (socket_out >= 0)
|
||||
{
|
||||
close(socket_out);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -320,14 +320,14 @@ public:
|
|||
void setAcceleration(const F32 x, const F32 y, const F32 z) { mAcceleration.setVec(x,y,z); }
|
||||
#endif
|
||||
|
||||
const LLPCode getPCode() const { return mPrimitiveCode; }
|
||||
LLPCode getPCode() const { return mPrimitiveCode; }
|
||||
const char * getPCodeString() const { return pCodeToString(mPrimitiveCode); }
|
||||
const LLVector3& getAngularVelocity() const { return mAngularVelocity; }
|
||||
const LLVector3& getVelocity() const { return mVelocity; }
|
||||
const LLVector3& getAcceleration() const { return mAcceleration; }
|
||||
const U8 getNumTEs() const { return mNumTEs; }
|
||||
U8 getNumTEs() const { return mNumTEs; }
|
||||
|
||||
const U8 getMaterial() const { return mMaterial; }
|
||||
U8 getMaterial() const { return mMaterial; }
|
||||
|
||||
void setVolumeType(const U8 code);
|
||||
U8 getVolumeType();
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
/* for information about formulas associated with each type
|
||||
* check the Weber + Penn paper
|
||||
*/
|
||||
typedef enum EShapeRatio { SR_CONICAL, SR_SPHERICAL, SR_HEMISPHERICAL,
|
||||
enum EShapeRatio { SR_CONICAL, SR_SPHERICAL, SR_HEMISPHERICAL,
|
||||
SR_CYLINDRICAL, SR_TAPERED_CYLINDRICAL, SR_FLAME,
|
||||
SR_INVERSE_CONICAL, SR_TEND_FLAME, SR_ENVELOPE};
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public:
|
|||
virtual S32 getHeight() const = 0;
|
||||
virtual const LLString& getText() const { return LLString::null; }
|
||||
virtual const LLString& getTextLower() const { return LLString::null; }
|
||||
virtual const BOOL getVisible() const { return TRUE; }
|
||||
virtual BOOL getVisible() const { return TRUE; }
|
||||
virtual void setWidth(S32 width) = 0;
|
||||
virtual void highlightText(S32 offset, S32 num_chars) {}
|
||||
virtual BOOL isText() = 0;
|
||||
|
|
@ -76,7 +76,7 @@ public:
|
|||
virtual void setWidth(S32 width) { mWidth = width; }
|
||||
virtual S32 getHeight() const { return llround(mFont->getLineHeight()); }
|
||||
virtual const LLString& getText() const { return mText.getString(); }
|
||||
virtual const BOOL getVisible() const { return mVisible; }
|
||||
virtual BOOL getVisible() const { return mVisible; }
|
||||
virtual void highlightText(S32 offset, S32 num_chars) {mHighlightOffset = offset; mHighlightCount = num_chars;}
|
||||
void setText(const LLString& text);
|
||||
virtual void setColor(const LLColor4&);
|
||||
|
|
|
|||
|
|
@ -419,6 +419,7 @@ LLView* LLTextBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *f
|
|||
text,
|
||||
font,
|
||||
FALSE);
|
||||
|
||||
|
||||
LLFontGL::HAlign halign = LLView::selectFontHAlign(node);
|
||||
text_box->setHAlign(halign);
|
||||
|
|
@ -430,6 +431,12 @@ LLView* LLTextBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *f
|
|||
{
|
||||
text_box->mFontStyle = LLFontGL::getStyleFromString(font_style);
|
||||
}
|
||||
|
||||
BOOL mouse_opaque;
|
||||
if (node->getAttributeBOOL("mouse_opaque", mouse_opaque))
|
||||
{
|
||||
text_box->setMouseOpaque(mouse_opaque);
|
||||
}
|
||||
|
||||
if(node->hasAttribute("text_color"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ public:
|
|||
{
|
||||
/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const
|
||||
{
|
||||
return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl * const>(view)->hasTabStop() && children.size() == 0, TRUE);
|
||||
return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl *>(view)->hasTabStop() && children.size() == 0, TRUE);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -124,7 +124,7 @@ public:
|
|||
{
|
||||
/*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const
|
||||
{
|
||||
return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl * const>(view)->acceptsTextInput(), TRUE);
|
||||
return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl *>(view)->acceptsTextInput(), TRUE);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -435,8 +435,8 @@ bool LLCompareByTabOrder::operator() (const LLView* const a, const LLView* const
|
|||
if(b && b->isCtrl()) b_score--;
|
||||
if(a_score == -2 && b_score == -2)
|
||||
{
|
||||
const LLUICtrl * const a_ctrl = static_cast<const LLUICtrl* const>(a);
|
||||
const LLUICtrl * const b_ctrl = static_cast<const LLUICtrl* const>(b);
|
||||
const LLUICtrl * const a_ctrl = static_cast<const LLUICtrl*>(a);
|
||||
const LLUICtrl * const b_ctrl = static_cast<const LLUICtrl*>(b);
|
||||
LLView::child_tab_order_const_iter_t a_found = mTabOrder.find(a_ctrl), b_found = mTabOrder.find(b_ctrl);
|
||||
if(a_found != mTabOrder.end()) a_score--;
|
||||
if(b_found != mTabOrder.end()) b_score--;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ filterResult_t LLEnabledFilter::operator() (const LLView* const view, const view
|
|||
}
|
||||
filterResult_t LLTabStopFilter::operator() (const LLView* const view, const viewList_t & children) const
|
||||
{
|
||||
return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl* const>(view)->hasTabStop(),
|
||||
return filterResult_t(view->isCtrl() && static_cast<const LLUICtrl*>(view)->hasTabStop(),
|
||||
view->canFocusChildren());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -151,12 +151,12 @@ public:
|
|||
BOOL getAttributeString(const LLString& name, LLString& value );
|
||||
|
||||
const ValueType& getType() const { return mType; }
|
||||
const U32 getLength() const { return mLength; }
|
||||
const U32 getPrecision() const { return mPrecision; }
|
||||
U32 getLength() const { return mLength; }
|
||||
U32 getPrecision() const { return mPrecision; }
|
||||
const LLString& getValue() const { return mValue; }
|
||||
LLString getTextContents() const;
|
||||
const LLStringTableEntry* getName() const { return mName; }
|
||||
const BOOL hasName(LLString name) const { return mName == gStringTable.checkStringEntry(name); }
|
||||
BOOL hasName(LLString name) const { return mName == gStringTable.checkStringEntry(name); }
|
||||
const LLString& getID() const { return mID; }
|
||||
|
||||
U32 getChildCount() const;
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ public:
|
|||
LLQuaternion mQuat;
|
||||
LLScriptLibData *mListp;
|
||||
|
||||
friend const bool operator<=(const LLScriptLibData &a, const LLScriptLibData &b)
|
||||
friend bool operator<=(const LLScriptLibData &a, const LLScriptLibData &b)
|
||||
{
|
||||
if (a.mType == b.mType)
|
||||
{
|
||||
|
|
@ -92,7 +92,7 @@ public:
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
friend const bool operator==(const LLScriptLibData &a, const LLScriptLibData &b)
|
||||
friend bool operator==(const LLScriptLibData &a, const LLScriptLibData &b)
|
||||
{
|
||||
if (a.mType == b.mType)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -66,6 +66,9 @@ Intel 915GM .*Intel.*915GM 0
|
|||
Intel 945G .*Intel.*945G 0
|
||||
Intel 945GM .*Intel.*945GM 0
|
||||
Intel 950 .*Intel.*950.*950 0
|
||||
Intel G965 .*Intel.*G965.* 0
|
||||
Intel GM965 .*Intel.*GM965.* 0
|
||||
Intel G33 .*Intel.*G33.* 0
|
||||
Intel Brookdale .*Intel.*Brookdale.* 0
|
||||
Intel Montara .*Intel.*Montara.* 0
|
||||
Intel Springdale .*Intel.*Springdale.* 0
|
||||
|
|
|
|||
|
|
@ -1005,7 +1005,7 @@ const LLVector3 &LLAgent::getPositionAgent()
|
|||
//-----------------------------------------------------------------------------
|
||||
// getRegionsVisited()
|
||||
//-----------------------------------------------------------------------------
|
||||
const S32 LLAgent::getRegionsVisited() const
|
||||
S32 LLAgent::getRegionsVisited() const
|
||||
{
|
||||
return mRegionsVisited.size();
|
||||
}
|
||||
|
|
@ -1013,7 +1013,7 @@ const S32 LLAgent::getRegionsVisited() const
|
|||
//-----------------------------------------------------------------------------
|
||||
// getDistanceTraveled()
|
||||
//-----------------------------------------------------------------------------
|
||||
const F64 LLAgent::getDistanceTraveled() const
|
||||
F64 LLAgent::getDistanceTraveled() const
|
||||
{
|
||||
return mDistanceTraveled;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -280,8 +280,8 @@ public:
|
|||
|
||||
const LLVector3d &getPositionGlobal();
|
||||
const LLVector3 &getPositionAgent();
|
||||
const S32 getRegionsVisited() const;
|
||||
const F64 getDistanceTraveled() const;
|
||||
S32 getRegionsVisited() const;
|
||||
F64 getDistanceTraveled() const;
|
||||
|
||||
const LLVector3d &getFocusGlobal() const { return mFocusGlobal; }
|
||||
const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; }
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public:
|
|||
|
||||
const LLMatrix4& getWorldMatrix() const { return mXform.getWorldMatrix(); }
|
||||
const LLMatrix4& getRenderMatrix() const { return isRoot() ? getWorldMatrix() : getParent()->getWorldMatrix(); }
|
||||
const void setPosition(LLVector3 v) const { }
|
||||
void setPosition(LLVector3 v) const { }
|
||||
const LLVector3& getPosition() const { return mXform.getPosition(); }
|
||||
const LLVector3& getWorldPosition() const { return mXform.getPositionW(); }
|
||||
const LLVector3 getPositionAgent() const;
|
||||
|
|
@ -76,14 +76,14 @@ public:
|
|||
const LLVector3& getScale() const { return mCurrentScale; }
|
||||
const LLQuaternion& getWorldRotation() const { return mXform.getWorldRotation(); }
|
||||
const LLQuaternion& getRotation() const { return mXform.getRotation(); }
|
||||
const F32 getIntensity() const { return llmin(mXform.getScale().mV[0], 4.f); }
|
||||
const S32 getLOD() const { return mVObjp ? mVObjp->getLOD() : 1; }
|
||||
const F64 getBinRadius() const { return mBinRadius; }
|
||||
F32 getIntensity() const { return llmin(mXform.getScale().mV[0], 4.f); }
|
||||
S32 getLOD() const { return mVObjp ? mVObjp->getLOD() : 1; }
|
||||
F64 getBinRadius() const { return mBinRadius; }
|
||||
void getMinMax(LLVector3& min,LLVector3& max) const { mXform.getMinMax(min,max); }
|
||||
LLXformMatrix* getXform() { return &mXform; }
|
||||
|
||||
const U32 getState() const { return mState; }
|
||||
const BOOL isState (U32 bits) const { return ((mState & bits) != 0); }
|
||||
U32 getState() const { return mState; }
|
||||
BOOL isState (U32 bits) const { return ((mState & bits) != 0); }
|
||||
void setState (U32 bits) { mState |= bits; }
|
||||
void clearState(U32 bits) { mState &= ~bits; }
|
||||
|
||||
|
|
|
|||
|
|
@ -84,7 +84,8 @@ protected:
|
|||
typedef std::vector<LLDrivenEntry> entry_list_t;
|
||||
entry_list_t mDriven;
|
||||
LLViewerVisualParam* mCurrentDistortionParam;
|
||||
LLPointer<LLVOAvatar> mAvatarp;
|
||||
// Backlink only; don't make this an LLPointer.
|
||||
LLVOAvatar* mAvatarp;
|
||||
};
|
||||
|
||||
#endif // LL_LLDRIVERPARAM_H
|
||||
|
|
|
|||
|
|
@ -916,7 +916,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
|||
BOOL is_static = mDrawablep->isStatic();
|
||||
BOOL is_global = is_static;
|
||||
|
||||
if (-1 == index_offset)
|
||||
if (index_offset == (U32) -1)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,11 +55,11 @@ public:
|
|||
|
||||
const LLMatrix4& getWorldMatrix() const { return mVObjp->getWorldMatrix(mXform); }
|
||||
const LLMatrix4& getRenderMatrix() const;
|
||||
const U32 getIndicesCount() const { return mIndicesCount; };
|
||||
const S32 getIndicesStart() const { return mIndicesIndex; };
|
||||
const S32 getGeomCount() const { return mGeomCount; } // vertex count for this face
|
||||
const S32 getGeomIndex() const { return mGeomIndex; } // index into draw pool
|
||||
const U32 getGeomStart() const { return mGeomIndex; } // index into draw pool
|
||||
U32 getIndicesCount() const { return mIndicesCount; };
|
||||
S32 getIndicesStart() const { return mIndicesIndex; };
|
||||
S32 getGeomCount() const { return mGeomCount; } // vertex count for this face
|
||||
S32 getGeomIndex() const { return mGeomIndex; } // index into draw pool
|
||||
U32 getGeomStart() const { return mGeomIndex; } // index into draw pool
|
||||
LLViewerImage* getTexture() const { return mTexture; }
|
||||
void setTexture(LLViewerImage* tex) { mTexture = tex; }
|
||||
LLXformMatrix* getXform() const { return mXform; }
|
||||
|
|
|
|||
|
|
@ -606,7 +606,7 @@ void LLVolumeImplFlexible::onSetScale(const LLVector3& scale, BOOL damped)
|
|||
|
||||
BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable)
|
||||
{
|
||||
LLVOVolume *volume = (LLVOVolume*)mVO.get();
|
||||
LLVOVolume *volume = (LLVOVolume*)mVO;
|
||||
|
||||
if (volume->mDrawable.isNull()) // Not sure why this is happening, but it is...
|
||||
{
|
||||
|
|
@ -722,7 +722,7 @@ void LLVolumeImplFlexible::updateRelativeXform()
|
|||
{
|
||||
LLQuaternion delta_rot;
|
||||
LLVector3 delta_pos, delta_scale;
|
||||
LLVOVolume* vo = (LLVOVolume*) mVO.get();
|
||||
LLVOVolume* vo = (LLVOVolume*) mVO;
|
||||
|
||||
//matrix from local space to parent relative/global space
|
||||
delta_rot = vo->mDrawable->isSpatialRoot() ? LLQuaternion() : vo->mDrawable->getRotation();
|
||||
|
|
|
|||
|
|
@ -91,7 +91,8 @@ class LLVolumeImplFlexible : public LLVolumeInterface
|
|||
//--------------------------------------
|
||||
// private members
|
||||
//--------------------------------------
|
||||
LLPointer<LLViewerObject> mVO;
|
||||
// Backlink only; don't make this an LLPointer.
|
||||
LLViewerObject* mVO;
|
||||
LLTimer mTimer;
|
||||
LLVector3 mAnchorPosition;
|
||||
LLVector3 mParentPosition;
|
||||
|
|
|
|||
|
|
@ -62,9 +62,10 @@ LLFloaterAbout::LLFloaterAbout()
|
|||
|
||||
// Version string
|
||||
LLString version = gSecondLife
|
||||
+ llformat(" %d.%d.%d (%d) %s %s",
|
||||
+ llformat(" %d.%d.%d (%d) %s %s (%s)",
|
||||
LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD,
|
||||
__DATE__, __TIME__);
|
||||
__DATE__, __TIME__,
|
||||
gChannelName.c_str());
|
||||
support.append(version);
|
||||
support.append("\n\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -167,22 +167,22 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
|||
// could flash the chat button in the status bar here. JC
|
||||
if (!gFloaterChat) return;
|
||||
|
||||
LLViewerTextEditor* HistoryEditor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor");
|
||||
LLViewerTextEditor* HistoryEditorWithMute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute");
|
||||
LLViewerTextEditor* history_editor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor");
|
||||
LLViewerTextEditor* history_editor_with_mute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute");
|
||||
|
||||
HistoryEditor->setParseHTML(TRUE);
|
||||
HistoryEditorWithMute->setParseHTML(TRUE);
|
||||
history_editor->setParseHTML(TRUE);
|
||||
history_editor_with_mute->setParseHTML(TRUE);
|
||||
|
||||
if (!chat.mMuted)
|
||||
{
|
||||
add_timestamped_line(HistoryEditor, chat.mText, color);
|
||||
add_timestamped_line(HistoryEditorWithMute, chat.mText, color);
|
||||
add_timestamped_line(history_editor, chat.mText, color);
|
||||
add_timestamped_line(history_editor_with_mute, chat.mText, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
// desaturate muted chat
|
||||
LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f);
|
||||
add_timestamped_line(HistoryEditorWithMute, chat.mText, color);
|
||||
add_timestamped_line(history_editor_with_mute, chat.mText, color);
|
||||
}
|
||||
|
||||
if (!chat.mMuted
|
||||
|
|
@ -191,17 +191,19 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
|||
&& chat.mFromID != gAgent.getID())
|
||||
{
|
||||
|
||||
LLComboBox* ChatterCombo = LLUICtrlFactory::getComboBoxByName(gFloaterChat,"chatter combobox");
|
||||
LLComboBox* chatter_combo = LLUICtrlFactory::getComboBoxByName(gFloaterChat,"chatter combobox");
|
||||
|
||||
if(!ChatterCombo)
|
||||
return;
|
||||
if(!chatter_combo)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ChatterCombo->setCurrentByID(chat.mFromID))
|
||||
if (!chatter_combo->setCurrentByID(chat.mFromID))
|
||||
{
|
||||
// if we have too many items...
|
||||
if (ChatterCombo->getItemCount() >= MAX_CHATTER_COUNT)
|
||||
if (chatter_combo->getItemCount() >= MAX_CHATTER_COUNT)
|
||||
{
|
||||
ChatterCombo->remove(0);
|
||||
chatter_combo->remove(0);
|
||||
}
|
||||
|
||||
LLMute mute(chat.mFromID, chat.mFromName);
|
||||
|
|
@ -214,8 +216,8 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
|||
mute.mType = LLMute::AGENT;
|
||||
}
|
||||
LLString item = mute.getDisplayName();
|
||||
ChatterCombo->add(item, chat.mFromID);
|
||||
ChatterCombo->setCurrentByIndex(ChatterCombo->getItemCount() - 1);
|
||||
chatter_combo->add(item, chat.mFromID);
|
||||
chatter_combo->setCurrentByIndex(chatter_combo->getItemCount() - 1);
|
||||
gFloaterChat->childSetEnabled("Mute resident",TRUE);
|
||||
}
|
||||
}
|
||||
|
|
@ -226,11 +228,11 @@ void LLFloaterChat::setHistoryCursorAndScrollToEnd()
|
|||
{
|
||||
if (gFloaterChat)
|
||||
{
|
||||
LLViewerTextEditor* HistoryEditor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor");
|
||||
LLViewerTextEditor* HistoryEditorWithMute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute");
|
||||
LLViewerTextEditor* history_editor = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor");
|
||||
LLViewerTextEditor* history_editor_with_mute = (LLViewerTextEditor*)gFloaterChat->getChildByName("Chat History Editor with mute");
|
||||
|
||||
HistoryEditor->setCursorAndScrollToEnd();
|
||||
HistoryEditorWithMute->setCursorAndScrollToEnd();
|
||||
history_editor->setCursorAndScrollToEnd();
|
||||
history_editor_with_mute->setCursorAndScrollToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -259,10 +261,10 @@ void LLFloaterChat::onClickMute(void *data)
|
|||
{
|
||||
LLFloaterChat* self = (LLFloaterChat*)data;
|
||||
|
||||
LLComboBox* ChatterCombo = LLUICtrlFactory::getComboBoxByName(self,"chatter combobox");
|
||||
LLComboBox* chatter_combo = LLUICtrlFactory::getComboBoxByName(self,"chatter combobox");
|
||||
|
||||
const LLString& name = ChatterCombo->getSimple();
|
||||
LLUUID id = ChatterCombo->getCurrentID();
|
||||
const LLString& name = chatter_combo->getSimple();
|
||||
LLUUID id = chatter_combo->getCurrentID();
|
||||
|
||||
if (name.empty()) return;
|
||||
|
||||
|
|
@ -308,24 +310,24 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
|
|||
|
||||
//LLCheckBoxCtrl*
|
||||
BOOL show_mute = LLUICtrlFactory::getCheckBoxByName(floater,"show mutes")->get();
|
||||
LLViewerTextEditor* HistoryEditor = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor");
|
||||
LLViewerTextEditor* HistoryEditorWithMute = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor with mute");
|
||||
LLViewerTextEditor* history_editor = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor");
|
||||
LLViewerTextEditor* history_editor_with_mute = (LLViewerTextEditor*)floater->getChildByName("Chat History Editor with mute");
|
||||
|
||||
if (!HistoryEditor || !HistoryEditorWithMute)
|
||||
if (!history_editor || !history_editor_with_mute)
|
||||
return;
|
||||
|
||||
//BOOL show_mute = floater->mShowMuteCheckBox->get();
|
||||
if (show_mute)
|
||||
{
|
||||
HistoryEditor->setVisible(FALSE);
|
||||
HistoryEditorWithMute->setVisible(TRUE);
|
||||
HistoryEditorWithMute->setCursorAndScrollToEnd();
|
||||
history_editor->setVisible(FALSE);
|
||||
history_editor_with_mute->setVisible(TRUE);
|
||||
history_editor_with_mute->setCursorAndScrollToEnd();
|
||||
}
|
||||
else
|
||||
{
|
||||
HistoryEditor->setVisible(TRUE);
|
||||
HistoryEditorWithMute->setVisible(FALSE);
|
||||
HistoryEditor->setCursorAndScrollToEnd();
|
||||
history_editor->setVisible(TRUE);
|
||||
history_editor_with_mute->setVisible(FALSE);
|
||||
history_editor->setCursorAndScrollToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -172,13 +172,11 @@ void LLFloaterLand::show()
|
|||
// (and hence we have the local id).
|
||||
// gParcelMgr->sendParcelAccessListRequest(AL_ACCESS | AL_BAN | AL_RENTER);
|
||||
|
||||
// If we've already got the parcel data, fill the
|
||||
// floater with it.
|
||||
sInstance->mParcel = gParcelMgr->getFloatingParcelSelection();
|
||||
if (sInstance->mParcel->getParcel())
|
||||
{
|
||||
sInstance->refresh();
|
||||
}
|
||||
|
||||
// Refresh even if not over a region so we don't get an
|
||||
// uninitialized dialog. The dialog is 0-region aware.
|
||||
sInstance->refresh();
|
||||
}
|
||||
|
||||
//static
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include "llcombobox.h"
|
||||
#include "llfilepicker.h"
|
||||
#include "llfloatergodtools.h" // for send_sim_wide_deletes()
|
||||
#include "llfloatertopobjects.h" // added to fix SL-32336
|
||||
#include "llfloatergroups.h"
|
||||
#include "llfloatertelehub.h"
|
||||
#include "lllineeditor.h"
|
||||
|
|
@ -865,6 +866,8 @@ void LLPanelRegionDebugInfo::onClickTopColliders(void* data)
|
|||
strings_t strings;
|
||||
strings.push_back("1"); // one physics step
|
||||
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
|
||||
LLFloaterTopObjects::show();
|
||||
LLFloaterTopObjects::clearList();
|
||||
self->sendEstateOwnerMessage(gMessageSystem, "colliders", invoice, strings);
|
||||
}
|
||||
|
||||
|
|
@ -875,6 +878,8 @@ void LLPanelRegionDebugInfo::onClickTopScripts(void* data)
|
|||
strings_t strings;
|
||||
strings.push_back("6"); // top 5 scripts
|
||||
LLUUID invoice(LLFloaterRegionInfo::getLastInvoice());
|
||||
LLFloaterTopObjects::show();
|
||||
LLFloaterTopObjects::clearList();
|
||||
self->sendEstateOwnerMessage(gMessageSystem, "scripts", invoice, strings);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -350,19 +350,22 @@ void LLFloaterTopObjects::onDisableSelected(void* data)
|
|||
sInstance->doToObjects(ACTION_DISABLE, false);
|
||||
}
|
||||
|
||||
//static
|
||||
void LLFloaterTopObjects::clearList()
|
||||
{
|
||||
LLCtrlListInterface *list = childGetListInterface("objects_list");
|
||||
LLCtrlListInterface *list = sInstance->childGetListInterface("objects_list");
|
||||
|
||||
if (list)
|
||||
{
|
||||
list->operateOnAll(LLCtrlListInterface::OP_DELETE);
|
||||
}
|
||||
|
||||
mObjectListData.clear();
|
||||
mObjectListIDs.clear();
|
||||
sInstance->mObjectListData.clear();
|
||||
sInstance->mObjectListIDs.clear();
|
||||
sInstance->mtotalScore = 0.f;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLFloaterTopObjects::onRefresh(void* data)
|
||||
{
|
||||
U32 mode = STAT_REPORT_TOP_SCRIPTS;
|
||||
|
|
@ -377,8 +380,6 @@ void LLFloaterTopObjects::onRefresh(void* data)
|
|||
sInstance->clearList();
|
||||
}
|
||||
|
||||
sInstance->mtotalScore = 0.f;
|
||||
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_LandStatRequest);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public:
|
|||
static void handle_land_reply(LLMessageSystem* msg, void** data);
|
||||
void handleReply(LLMessageSystem* msg, void** data);
|
||||
|
||||
void clearList();
|
||||
static void clearList();
|
||||
void updateSelectionInfo();
|
||||
virtual BOOL postBuild();
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public:
|
|||
|
||||
const LLUUID& getSessionID() const { return mSessionUUID; }
|
||||
const LLUUID& getOtherParticipantID() const { return mOtherParticipantUUID; }
|
||||
const EInstantMessage getDialogType() const { return mDialog; }
|
||||
EInstantMessage getDialogType() const { return mDialog; }
|
||||
|
||||
void sessionInitReplyReceived(const LLUUID& im_session_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@
|
|||
#include "llviewerobject.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llresmgr.h"
|
||||
#include "lltexturetable.h"
|
||||
#include "llselectmgr.h"
|
||||
#include "llpreviewscript.h"
|
||||
#include "lltool.h"
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@
|
|||
#include "lltextbox.h"
|
||||
#include "lltexturectrl.h"
|
||||
#include "lltextureentry.h"
|
||||
#include "lltexturetable.h"
|
||||
#include "lltooldraganddrop.h"
|
||||
#include "llui.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
|
|
|||
|
|
@ -200,7 +200,8 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
text->setClickedCallback(onClickVersion);
|
||||
text->setCallbackUserData(this);
|
||||
|
||||
// HACK
|
||||
// HACK to move to the lower-right of the window
|
||||
// replace/remove this logic when we have dynamic layouts
|
||||
S32 right = getRect().mRight;
|
||||
LLRect r = text->getRect();
|
||||
const S32 PAD = 2;
|
||||
|
|
@ -209,6 +210,31 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
text->setRect(r);
|
||||
}
|
||||
|
||||
LLTextBox* channel_text = LLUICtrlFactory::getTextBoxByName(this, "channel_text");
|
||||
if (channel_text)
|
||||
{
|
||||
channel_text->setText(gChannelName);
|
||||
channel_text->setClickedCallback(onClickVersion);
|
||||
channel_text->setCallbackUserData(this);
|
||||
|
||||
// HACK to move to the right of the window, above the version string,
|
||||
// replace/remove this logic when we have dynamic layouts
|
||||
S32 right = getRect().mRight;
|
||||
LLRect r = channel_text->getRect();
|
||||
const S32 PAD = 2;
|
||||
S32 version_string_top = r.mTop;
|
||||
if(text)
|
||||
{
|
||||
version_string_top = text->getRect().mTop;
|
||||
}
|
||||
r.setOriginAndSize(
|
||||
right - r.getWidth() - PAD,
|
||||
version_string_top,
|
||||
r.getWidth(),
|
||||
r.getHeight());
|
||||
channel_text->setRect(r);
|
||||
}
|
||||
|
||||
// get the web browser control
|
||||
#if LL_LIBXUL_ENABLED
|
||||
LLWebBrowserCtrl* web_browser = LLUICtrlFactory::getWebBrowserCtrlByName(this, "login_html");
|
||||
|
|
|
|||
|
|
@ -340,7 +340,8 @@ protected:
|
|||
typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable;
|
||||
static LLPolyMeshSharedDataTable sGlobalSharedMeshList;
|
||||
|
||||
LLPointer<LLVOAvatar> mAvatarp;
|
||||
// Backlink only; don't make this an LLPointer.
|
||||
LLVOAvatar* mAvatarp;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -406,7 +407,8 @@ protected:
|
|||
joint_vec_map_t mJointScales;
|
||||
joint_vec_map_t mJointOffsets;
|
||||
LLVector3 mDefaultVec;
|
||||
LLPointer<LLVOAvatar> mAvatar;
|
||||
// Backlink only; don't make this an LLPointer.
|
||||
LLVOAvatar *mAvatar;
|
||||
};
|
||||
|
||||
#endif // LL_LLPOLYMESH_H
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ BOOL LLProgressView::handleKeyHere(KEY key, MASK mask, BOOL called_from_parent)
|
|||
// Suck up all keystokes except CTRL-Q.
|
||||
if( ('Q' == key) && (MASK_CONTROL == mask) )
|
||||
{
|
||||
app_request_quit();
|
||||
app_user_quit();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,49 +53,37 @@ vector<LLSRVRecord> LLSRV::query(const string& name)
|
|||
|
||||
#include <netdb.h>
|
||||
|
||||
vector<LLSRVRecord> LLSRV::query(const string& queryName)
|
||||
#ifdef HOMEGROWN_RESPONSE_PARSER
|
||||
|
||||
// We ought to be using libresolv's ns_initparse and ns_parserr to
|
||||
// parse the result of our query. However, libresolv isn't packaged
|
||||
// correctly on Linux (as of BIND 9), so neither of these functions is
|
||||
// available without statically linking against libresolv. Ugh! This
|
||||
// fallback function is available if we need to parse the response
|
||||
// ourselves without relying too much on libresolv. It is NOT THE
|
||||
// DEFAULT.
|
||||
|
||||
vector<LLSRVRecord> LLSRV::parseResponse(const unsigned char *response,
|
||||
int resp_len)
|
||||
{
|
||||
unsigned char response[16384];
|
||||
vector<LLSRVRecord> recs;
|
||||
char name[1024];
|
||||
int len;
|
||||
|
||||
len = res_query(queryName.c_str(), ns_c_in, ns_t_srv, response,
|
||||
sizeof(response));
|
||||
|
||||
if (len == -1)
|
||||
{
|
||||
llinfos << "Query failed for " << queryName << llendl;
|
||||
return recs;
|
||||
}
|
||||
else if (len > (int) sizeof(response))
|
||||
{
|
||||
llinfos << "Response too big for " << queryName
|
||||
<< " (capacity " << sizeof(response)
|
||||
<< ", response " << len << ")" << llendl;
|
||||
return recs;
|
||||
}
|
||||
|
||||
// We "should" be using libresolv's ns_initparse and ns_parserr to
|
||||
// parse the result of our query. However, libresolv isn't
|
||||
// packaged correctly on Linux (as of BIND 9), so neither of these
|
||||
// functions is available without statically linking against
|
||||
// libresolv. Ugh! So we parse the response ourselves.
|
||||
|
||||
const unsigned char *pos = response + sizeof(HEADER);
|
||||
const unsigned char *end = response + len;
|
||||
const unsigned char *end = response + resp_len;
|
||||
const HEADER *hdr = (const HEADER *) response;
|
||||
char name[1024];
|
||||
|
||||
// Skip over the query embedded in the response.
|
||||
|
||||
for (int q = ntohs(hdr->qdcount); q > 0; --q)
|
||||
{
|
||||
len = dn_expand(response, end, pos, name, sizeof(name));
|
||||
int len = dn_expand(response, end, pos, name, sizeof(name));
|
||||
|
||||
if (len == -1)
|
||||
{
|
||||
llinfos << "Could not expand queried name in RR response" << llendl;
|
||||
return recs;
|
||||
llinfos << "Could not expand queried name in RR response"
|
||||
<< llendl;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
pos += len + NS_QFIXEDSZ;
|
||||
|
|
@ -105,11 +93,12 @@ vector<LLSRVRecord> LLSRV::query(const string& queryName)
|
|||
{
|
||||
static const ns_rr *rr;
|
||||
|
||||
len = dn_expand(response, end, pos, name, sizeof(name) - 1);
|
||||
int len = dn_expand(response, end, pos, name, sizeof(name) - 1);
|
||||
if (len == -1)
|
||||
{
|
||||
llinfos << "Could not expand response name in RR response" << llendl;
|
||||
return recs;
|
||||
llinfos << "Could not expand response name in RR response"
|
||||
<< llendl;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
// Skip over the resource name and headers we don't care about.
|
||||
|
|
@ -130,7 +119,7 @@ vector<LLSRVRecord> LLSRV::query(const string& queryName)
|
|||
if (len == -1)
|
||||
{
|
||||
llinfos << "Could not expand name in RR response" << llendl;
|
||||
return recs;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
recs.push_back(LLSRVRecord(prio, weight, name, port));
|
||||
|
|
@ -138,12 +127,177 @@ vector<LLSRVRecord> LLSRV::query(const string& queryName)
|
|||
|
||||
// There are likely to be more records in the response, but we
|
||||
// don't care about those, at least for now.
|
||||
bail:
|
||||
return reorder(recs);
|
||||
}
|
||||
|
||||
return recs;
|
||||
#else // HOMEGROWN_RESPONSE_PARSER
|
||||
|
||||
// This version of the response parser is the one to use if libresolv
|
||||
// is available and behaving itself.
|
||||
|
||||
vector<LLSRVRecord> LLSRV::parseResponse(const unsigned char *response,
|
||||
int resp_len)
|
||||
{
|
||||
vector<LLSRVRecord> recs;
|
||||
ns_msg hdr;
|
||||
|
||||
if (ns_initparse(response, resp_len, &hdr))
|
||||
{
|
||||
llinfos << "Could not parse response" << llendl;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ns_msg_count(hdr, ns_s_an); i++)
|
||||
{
|
||||
ns_rr rr;
|
||||
|
||||
if (ns_parserr(&hdr, ns_s_an, i, &rr))
|
||||
{
|
||||
llinfos << "Could not parse RR" << llendl;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (ns_rr_type(rr) != ns_t_srv)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const unsigned char *pos = ns_rr_rdata(rr);
|
||||
U16 prio, weight, port;
|
||||
char name[1024];
|
||||
int ret;
|
||||
|
||||
NS_GET16(prio, pos);
|
||||
NS_GET16(weight, pos);
|
||||
NS_GET16(port, pos);
|
||||
|
||||
ret = dn_expand(ns_msg_base(hdr), ns_msg_end(hdr), pos,
|
||||
name, sizeof(name));
|
||||
|
||||
if (ret == -1)
|
||||
{
|
||||
llinfos << "Could not decompress name" << llendl;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
recs.push_back(LLSRVRecord(prio, weight, name, port));
|
||||
}
|
||||
|
||||
bail:
|
||||
return reorder(recs);
|
||||
}
|
||||
|
||||
#endif // HOMEGROWN_RESPONSE_PARSER
|
||||
|
||||
vector<LLSRVRecord> LLSRV::query(const string& queryName)
|
||||
{
|
||||
unsigned char response[16384];
|
||||
vector<LLSRVRecord> recs;
|
||||
int len;
|
||||
|
||||
len = res_query(queryName.c_str(), ns_c_in, ns_t_srv, response,
|
||||
sizeof(response));
|
||||
|
||||
if (len == -1)
|
||||
{
|
||||
llinfos << "Query failed for " << queryName << llendl;
|
||||
goto bail;
|
||||
}
|
||||
else if (len > (int) sizeof(response))
|
||||
{
|
||||
llinfos << "Response too big for " << queryName
|
||||
<< " (capacity " << sizeof(response)
|
||||
<< ", response " << len << ")" << llendl;
|
||||
goto bail;
|
||||
}
|
||||
|
||||
recs = parseResponse(response, len);
|
||||
bail:
|
||||
return reorder(recs);
|
||||
}
|
||||
|
||||
#endif // LL_WINDOWS
|
||||
|
||||
// Implement the algorithm specified in RFC 2782 for dealing with RRs
|
||||
// of differing priorities and weights.
|
||||
vector<LLSRVRecord> LLSRV::reorder(vector<LLSRVRecord>& recs)
|
||||
{
|
||||
typedef list<const LLSRVRecord *> reclist_t;
|
||||
typedef map<U16, reclist_t> bucket_t;
|
||||
vector<LLSRVRecord> newRecs;
|
||||
bucket_t buckets;
|
||||
|
||||
// Don't rely on the DNS server to shuffle responses.
|
||||
|
||||
random_shuffle(recs.begin(), recs.end());
|
||||
|
||||
for (vector<LLSRVRecord>::const_iterator iter = recs.begin();
|
||||
iter != recs.end(); ++iter)
|
||||
{
|
||||
buckets[iter->priority()].push_back(&*iter);
|
||||
}
|
||||
|
||||
// Priorities take precedence over weights.
|
||||
|
||||
for (bucket_t::iterator iter = buckets.begin();
|
||||
iter != buckets.end(); ++iter)
|
||||
{
|
||||
reclist_t& myPrio = iter->second;
|
||||
reclist_t r;
|
||||
|
||||
// RRs with weight zero go to the front of the intermediate
|
||||
// list, so they'll have little chance of being chosen.
|
||||
// Larger weights have a higher likelihood of selection.
|
||||
|
||||
for (reclist_t::iterator i = myPrio.begin(); i != myPrio.end(); )
|
||||
{
|
||||
if ((*i)->weight() == 0)
|
||||
{
|
||||
r.push_back(*i);
|
||||
i = myPrio.erase(i);
|
||||
} else {
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
r.insert(r.end(), myPrio.begin(), myPrio.end());
|
||||
|
||||
while (!r.empty())
|
||||
{
|
||||
U32 total = 0;
|
||||
|
||||
for (reclist_t::const_iterator i = r.begin(); i != r.end(); ++i)
|
||||
{
|
||||
total += (*i)->weight();
|
||||
}
|
||||
|
||||
U32 target = total > 1 ? (rand() % total) : 0;
|
||||
U32 partial = 0;
|
||||
|
||||
for (reclist_t::iterator i = r.begin(); i != r.end(); )
|
||||
{
|
||||
partial += (*i)->weight();
|
||||
if (partial >= target)
|
||||
{
|
||||
newRecs.push_back(**i);
|
||||
i = r.erase(i);
|
||||
} else {
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Order RRs by lowest numeric priority. The stable sort
|
||||
// preserves the weight choices we made above.
|
||||
|
||||
stable_sort(newRecs.begin(), newRecs.end(),
|
||||
LLSRVRecord::ComparePriorityLowest());
|
||||
|
||||
return newRecs;
|
||||
}
|
||||
|
||||
vector<string> LLSRV::rewriteURI(const string& uriStr)
|
||||
{
|
||||
LLURI uri(uriStr);
|
||||
|
|
@ -166,6 +320,14 @@ vector<string> LLSRV::rewriteURI(const string& uriStr)
|
|||
size_t i;
|
||||
|
||||
llinfos << "Got " << srvs.size() << " results" << llendl;
|
||||
for (iter = srvs.begin(); iter != srvs.end(); ++iter)
|
||||
{
|
||||
lldebugs << "host " << iter->target() << ':' << iter->port()
|
||||
<< " prio " << iter->priority()
|
||||
<< " weight " << iter->weight()
|
||||
<< llendl;
|
||||
}
|
||||
|
||||
if (srvs.size() > maxSrvs)
|
||||
{
|
||||
llinfos << "Clamping to " << maxSrvs << llendl;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ protected:
|
|||
std::string mTarget;
|
||||
U16 mPort;
|
||||
|
||||
public:
|
||||
LLSRVRecord(U16 priority, U16 weight, const std::string& target,
|
||||
U16 port) :
|
||||
mPriority(priority),
|
||||
|
|
@ -28,16 +29,30 @@ protected:
|
|||
mTarget(target),
|
||||
mPort(port) {
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
U16 priority() const { return mPriority; }
|
||||
U16 weight() const { return mWeight; }
|
||||
const std::string& target() const { return mTarget; }
|
||||
U16 port() const { return mPort; }
|
||||
|
||||
struct ComparePriorityLowest
|
||||
{
|
||||
bool operator()(const LLSRVRecord& lhs, const LLSRVRecord& rhs)
|
||||
{
|
||||
return lhs.mPriority < rhs.mPriority;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
class LLSRV
|
||||
{
|
||||
protected:
|
||||
#ifndef LL_WINDOWS
|
||||
static std::vector<LLSRVRecord> parseResponse(const unsigned char *response,
|
||||
int resp_len);
|
||||
#endif
|
||||
static std::vector<LLSRVRecord> reorder(std::vector<LLSRVRecord>& recs);
|
||||
|
||||
public:
|
||||
static std::vector<LLSRVRecord> query(const std::string& name);
|
||||
static std::vector<std::string> rewriteURI(const std::string& uri);
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ LLStatusBar *gStatusBar = NULL;
|
|||
S32 STATUS_BAR_HEIGHT = 0;
|
||||
extern S32 MENU_BAR_HEIGHT;
|
||||
|
||||
|
||||
// TODO: these values ought to be in the XML too
|
||||
const S32 MENU_PARCEL_SPACING = 1; // Distance from right of menu item to parcel information
|
||||
const S32 SIM_STAT_WIDTH = 8;
|
||||
|
|
@ -75,6 +76,10 @@ const F32 ICON_FLASH_FREQUENCY = 2.f;
|
|||
const S32 GRAPHIC_FUDGE = 4;
|
||||
const S32 TEXT_HEIGHT = 18;
|
||||
|
||||
std::vector<std::string> LLStatusBar::sDays;
|
||||
std::vector<std::string> LLStatusBar::sMonths;
|
||||
const U32 LLStatusBar::MAX_DATE_STRING_LENGTH = 2000;
|
||||
|
||||
LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect)
|
||||
: LLPanel(name, LLRect(), FALSE), // not mouse opaque
|
||||
mBalance(0),
|
||||
|
|
@ -86,6 +91,10 @@ LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect)
|
|||
mMouseOpaque = FALSE;
|
||||
setIsChrome(TRUE);
|
||||
|
||||
// size of day of the weeks and year
|
||||
sDays.reserve(7);
|
||||
sMonths.reserve(12);
|
||||
|
||||
mBalanceTimer = new LLFrameTimer();
|
||||
mHealthTimer = new LLFrameTimer();
|
||||
|
||||
|
|
@ -94,6 +103,9 @@ LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect)
|
|||
// status bar can never get a tab
|
||||
setFocusRoot(FALSE);
|
||||
|
||||
// build date necessary data (must do after panel built)
|
||||
setupDate();
|
||||
|
||||
mBtnScriptOut = LLUICtrlFactory::getButtonByName( this, "scriptout" );
|
||||
mBtnHealth = LLUICtrlFactory::getButtonByName( this, "health" );
|
||||
mBtnFly = LLUICtrlFactory::getButtonByName( this, "fly" );
|
||||
|
|
@ -108,7 +120,7 @@ LLStatusBar::LLStatusBar(const std::string& name, const LLRect& rect)
|
|||
|
||||
mTextHealth = LLUICtrlFactory::getTextBoxByName( this, "HealthText" );
|
||||
mTextTime = LLUICtrlFactory::getTextBoxByName( this, "TimeText" );
|
||||
|
||||
|
||||
S32 x = mRect.getWidth() - 2;
|
||||
S32 y = 0;
|
||||
LLRect r;
|
||||
|
|
@ -245,6 +257,14 @@ void LLStatusBar::refresh()
|
|||
<< " " << am_pm << " " << tz;
|
||||
mTextTime->setText(t.str().c_str());
|
||||
|
||||
// Year starts at 1900, set the tooltip to have the date
|
||||
std::ostringstream date;
|
||||
date << sDays[internal_time->tm_wday] << ", "
|
||||
<< std::setfill('0') << std::setw(2) << internal_time->tm_mday << " "
|
||||
<< sMonths[internal_time->tm_mon] << " "
|
||||
<< internal_time->tm_year + 1900;
|
||||
mTextTime->setToolTip(date.str().c_str());
|
||||
|
||||
LLRect r;
|
||||
const S32 MENU_RIGHT = gMenuBarView->getRightmostMenuEdge();
|
||||
S32 x = MENU_RIGHT + MENU_PARCEL_SPACING;
|
||||
|
|
@ -624,6 +644,69 @@ void LLStatusBar::onClickBuyLand(void*)
|
|||
gParcelMgr->startBuyLand();
|
||||
}
|
||||
|
||||
// sets the static variables necessary for the date
|
||||
void LLStatusBar::setupDate()
|
||||
{
|
||||
// fill the day array with what's in the xui
|
||||
LLString day_list = childGetText("StatBarDaysOfWeek");
|
||||
size_t length = day_list.size();
|
||||
|
||||
// quick input check
|
||||
if(length < MAX_DATE_STRING_LENGTH)
|
||||
{
|
||||
// tokenize it and put it in the array
|
||||
LLString cur_word;
|
||||
for(size_t i = 0; i < length; ++i)
|
||||
{
|
||||
if(day_list[i] == ':')
|
||||
{
|
||||
sDays.push_back(cur_word);
|
||||
cur_word.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_word.append(1, day_list.c_str()[i]);
|
||||
}
|
||||
}
|
||||
sDays.push_back(cur_word);
|
||||
}
|
||||
|
||||
// fill the day array with what's in the xui
|
||||
LLString month_list = childGetText( "StatBarMonthsOfYear" );
|
||||
length = month_list.size();
|
||||
|
||||
// quick input check
|
||||
if(length < MAX_DATE_STRING_LENGTH)
|
||||
{
|
||||
// tokenize it and put it in the array
|
||||
LLString cur_word;
|
||||
for(size_t i = 0; i < length; ++i)
|
||||
{
|
||||
if(month_list[i] == ':')
|
||||
{
|
||||
sMonths.push_back(cur_word);
|
||||
cur_word.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
cur_word.append(1, month_list.c_str()[i]);
|
||||
}
|
||||
}
|
||||
sMonths.push_back(cur_word);
|
||||
}
|
||||
|
||||
// make sure we have at least 7 days and 12 months
|
||||
if(sDays.size() < 7)
|
||||
{
|
||||
sDays.resize(7);
|
||||
}
|
||||
|
||||
if(sMonths.size() < 12)
|
||||
{
|
||||
sMonths.resize(12);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL can_afford_transaction(S32 cost)
|
||||
{
|
||||
return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost)));
|
||||
|
|
|
|||
|
|
@ -73,6 +73,9 @@ protected:
|
|||
static void onClickScripts(void*);
|
||||
static void onClickBuyLand(void*);
|
||||
static void onClickScriptDebug(void*);
|
||||
|
||||
// simple method to setup the part that holds the date
|
||||
void setupDate();
|
||||
|
||||
protected:
|
||||
LLTextBox *mTextBalance;
|
||||
|
|
@ -101,6 +104,10 @@ protected:
|
|||
S32 mSquareMetersCommitted;
|
||||
LLFrameTimer* mBalanceTimer;
|
||||
LLFrameTimer* mHealthTimer;
|
||||
|
||||
static std::vector<std::string> sDays;
|
||||
static std::vector<std::string> sMonths;
|
||||
static const U32 LLStatusBar::MAX_DATE_STRING_LENGTH;
|
||||
};
|
||||
|
||||
// *HACK: Status bar owns your cached money balance. JC
|
||||
|
|
|
|||
|
|
@ -2294,7 +2294,7 @@ LLColor4 LLTexParamColor::getNetColor()
|
|||
{
|
||||
llassert( getInfo()->mNumColors >= 1 );
|
||||
|
||||
F32 effective_weight = ( mAvatar.notNull() && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight();
|
||||
F32 effective_weight = ( mAvatar && (mAvatar->getSex() & getSex()) ) ? mCurWeight : getDefaultWeight();
|
||||
|
||||
S32 index_last = getInfo()->mNumColors - 1;
|
||||
F32 scaled_weight = effective_weight * index_last;
|
||||
|
|
|
|||
|
|
@ -266,7 +266,8 @@ protected:
|
|||
typedef std::vector<LLTexLayer *> layer_list_t;
|
||||
layer_list_t mLayerList;
|
||||
LLTexLayerSetBuffer* mComposite;
|
||||
LLPointer<LLVOAvatar> mAvatar;
|
||||
// Backlink only; don't make this an LLPointer.
|
||||
LLVOAvatar* mAvatar;
|
||||
BOOL mUpdatesEnabled;
|
||||
BOOL mHasBump;
|
||||
|
||||
|
|
@ -423,7 +424,7 @@ public:
|
|||
protected:
|
||||
typedef std::vector<LLTexParamColor *> param_list_t;
|
||||
param_list_t mParamList;
|
||||
LLPointer<LLVOAvatar> mAvatar;
|
||||
LLVOAvatar* mAvatar; // just backlink, don't LLPointer
|
||||
|
||||
LLTexGlobalColorInfo *mInfo;
|
||||
};
|
||||
|
|
@ -469,7 +470,7 @@ protected:
|
|||
LLVector3 mAvgDistortionVec;
|
||||
LLTexGlobalColor* mTexGlobalColor; // either has mTexGlobalColor or mTexLayer as its parent
|
||||
LLTexLayer* mTexLayer;
|
||||
LLPointer<LLVOAvatar> mAvatar; // redundant, but simplifies the code
|
||||
LLVOAvatar* mAvatar; // redundant, but simplifies the code (don't LLPointer)
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -549,7 +550,7 @@ public:
|
|||
~LLBakedUploadData() {}
|
||||
|
||||
LLUUID mID;
|
||||
LLPointer<LLVOAvatar> mAvatar;
|
||||
LLVOAvatar* mAvatar; // just backlink, don't LLPointer
|
||||
LLTexLayerSetBuffer* mLayerSetBuffer;
|
||||
LLUUID mWearableAssets[WT_COUNT];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
#include "lltexlayer.h"
|
||||
#include "lltexturecache.h"
|
||||
#include "lltexturefetch.h"
|
||||
#include "lltexturetable.h"
|
||||
#include "llviewerobject.h"
|
||||
#include "llviewerimage.h"
|
||||
#include "llviewerimagelist.h"
|
||||
|
|
@ -163,9 +162,6 @@ void LLTextureBar::draw()
|
|||
|
||||
LLGLSUIDefault gls_ui;
|
||||
|
||||
// Get the name or UUID of the image.
|
||||
gTextureTable.getName(mImagep->mID);
|
||||
|
||||
// Name, pixel_area, requested pixel area, decode priority
|
||||
char uuid_str[255];
|
||||
mImagep->mID.toString(uuid_str);
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public:
|
|||
|
||||
S32 getGroup() { return mGroup; }
|
||||
S32 getPieSlice() { return mPieSlice; }
|
||||
BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject.notNull(); }
|
||||
BOOL getAttachmentDirty() { return mAttachmentDirty && mAttachedObject; }
|
||||
LLViewerObject *getObject() { return mAttachedObject; }
|
||||
S32 getNumObjects() { return (mAttachedObject ? 1 : 0); }
|
||||
const LLUUID& getItemID() { return mItemID; }
|
||||
|
|
@ -79,7 +79,8 @@ protected:
|
|||
|
||||
protected:
|
||||
LLJoint* mJoint;
|
||||
LLPointer<LLViewerObject> mAttachedObject;
|
||||
// Backlink only; don't make this an LLPointer.
|
||||
LLViewerObject* mAttachedObject;
|
||||
BOOL mAttachmentDirty; // does attachment drawable need to be fixed up?
|
||||
BOOL mVisibleInFirst;
|
||||
LLVector3 mOriginalPos;
|
||||
|
|
|
|||
|
|
@ -415,7 +415,7 @@ class LLFileQuit : public view_listener_t
|
|||
{
|
||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||
{
|
||||
app_request_quit();
|
||||
app_user_quit();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2248,6 +2248,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
|
|||
}
|
||||
break;
|
||||
case CHAT_TYPE_DEBUG_MSG:
|
||||
case CHAT_TYPE_OWNER:
|
||||
case CHAT_TYPE_NORMAL:
|
||||
verb = ": ";
|
||||
break;
|
||||
|
|
@ -2553,7 +2554,7 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
|
|||
msg->getStringFast(_PREHASH_Info, _PREHASH_SeedCapability,
|
||||
STD_STRING_BUF_SIZE, seedCap);
|
||||
|
||||
// update home location if we are teleporting out of prelude
|
||||
// update home location if we are teleporting out of prelude - specific to teleporting to welcome area
|
||||
if((teleport_flags & TELEPORT_FLAGS_SET_HOME_TO_TARGET)
|
||||
&& (!gAgent.isGodlike()))
|
||||
{
|
||||
|
|
@ -4257,6 +4258,8 @@ void notify_cautioned_script_question(LLScriptQuestionCBData* cbdata, S32 orig_q
|
|||
// only continue if at least some permissions were requested
|
||||
if (orig_questions)
|
||||
{
|
||||
// check to see if the person we are asking
|
||||
|
||||
// "'[OBJECTNAME]', an object owned by '[OWNERNAME]',
|
||||
// located in [REGIONNAME] at [REGIONPOS],
|
||||
// has been <granted|denied> permission to: [PERMISSIONS]."
|
||||
|
|
@ -4420,6 +4423,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
|
|||
msg->getStringFast(_PREHASH_Data, _PREHASH_ObjectOwner, DB_FULL_NAME_BUF_SIZE, owner_name);
|
||||
msg->getS32Fast(_PREHASH_Data, _PREHASH_Questions, questions );
|
||||
|
||||
// don't display permission requests if this object is muted - JS.
|
||||
if (gMuteListp->isMuted(taskid)) return;
|
||||
|
||||
LLString script_question;
|
||||
if (questions)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1134,7 +1134,7 @@ BOOL LLViewerWindow::handleCloseRequest(LLWindow *window)
|
|||
{
|
||||
// User has indicated they want to close, but we may need to ask
|
||||
// about modified documents.
|
||||
app_request_quit();
|
||||
app_user_quit();
|
||||
// Don't quit immediately
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -257,7 +257,7 @@ public:
|
|||
void setHorizonVisibility(const F32 c = 1) { mHorizonVisibility = c; }
|
||||
const F32& getVisibility() const { return mVisibility; }
|
||||
void setVisibility(const F32 c = 1) { mVisibility = c; }
|
||||
const F32 getHaloBrighness() const
|
||||
F32 getHaloBrighness() const
|
||||
{
|
||||
return llmax(0.f, llmin(0.9f, mHorizonVisibility)) * mVisibility;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,9 +12,6 @@
|
|||
#include "llviewerobject.h"
|
||||
#include "llviewerimage.h"
|
||||
#include "v2math.h"
|
||||
#include "llfft.h"
|
||||
|
||||
#include "llwaterpatch.h"
|
||||
|
||||
const U32 N_RES = 16; //32 // number of subdivisions of wave tile
|
||||
const U8 WAVE_STEP = 8;
|
||||
|
|
|
|||
|
|
@ -412,8 +412,8 @@ class Linux_i686Manifest(LinuxManifest):
|
|||
self.path("libstdc++.so.6")
|
||||
self.path("libuuid.so", "libuuid.so.1")
|
||||
self.path("libSDL-1.2.so.0")
|
||||
self.path("libtcmalloc.so.0")
|
||||
self.path("libstacktrace.so.0")
|
||||
#self.path("libtcmalloc.so.0")
|
||||
#self.path("libstacktrace.so.0")
|
||||
self.path("libllkdu.so", "../bin/libllkdu.so") # llkdu goes in bin for some reason
|
||||
self.end_prefix("lib")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue