svn merge -r 64079:64548 svn+ssh://svn/svn/linden/branches/maintenance into release

master
Don Kjer 2007-07-02 17:10:30 +00:00
parent ce5e13630c
commit e5124431b5
61 changed files with 507 additions and 182 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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; }
};

View File

@ -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);

View File

@ -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();

View File

@ -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; }

View File

@ -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);

View File

@ -8,7 +8,10 @@
* $License$
*/
#include "linden_common.h"
#include "metaclass.h"
#include "metaproperty.h"
#include "reflective.h"

View File

@ -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) :

View File

@ -7,6 +7,8 @@
* Copyright (c) 2006-$CurrentYear$, Linden Research, Inc.
* $License$
*/
#include "linden_common.h"
#include "reflective.h"

View File

@ -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; }

View File

@ -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

View File

@ -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; }

View File

@ -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]; }

View File

@ -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

View File

@ -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.

View File

@ -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);
}

View File

@ -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();

View File

@ -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};

View File

@ -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&);

View File

@ -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"))
{

View File

@ -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);
}
};

View File

@ -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--;

View File

@ -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());
}

View File

@ -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;

View File

@ -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)
{

View File

@ -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

View File

@ -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;
}

View File

@ -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; }

View File

@ -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; }

View File

@ -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

View File

@ -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;
}

View File

@ -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; }

View File

@ -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();

View File

@ -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;

View File

@ -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");

View File

@ -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();
}
}

View File

@ -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

View File

@ -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);
}

View File

@ -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);

View File

@ -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();

View File

@ -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);

View File

@ -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"

View File

@ -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"

View File

@ -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");

View File

@ -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

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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)));

View File

@ -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

View File

@ -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;

View File

@ -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];
};

View File

@ -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);

View File

@ -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;

View File

@ -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;
}
};

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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")