diff options
Diffstat (limited to 'indra')
60 files changed, 502 insertions, 180 deletions
diff --git a/indra/llcharacter/llheadrotmotion.cpp b/indra/llcharacter/llheadrotmotion.cpp index 66b675e34d..cbce927ced 100644 --- a/indra/llcharacter/llheadrotmotion.cpp +++ b/indra/llcharacter/llheadrotmotion.cpp @@ -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; } diff --git a/indra/llcharacter/lljointstate.h b/indra/llcharacter/lljointstate.h index 82a2b345b0..c1c68ff065 100644 --- a/indra/llcharacter/lljointstate.h +++ b/indra/llcharacter/lljointstate.h @@ -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; } }; diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp index fad69fc6e9..592a6bae2c 100644 --- a/indra/llcharacter/llmotioncontroller.cpp +++ b/indra/llcharacter/llmotioncontroller.cpp @@ -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); diff --git a/indra/llcharacter/llmotioncontroller.h b/indra/llcharacter/llmotioncontroller.h index 15791b6318..19bab09a11 100644 --- a/indra/llcharacter/llmotioncontroller.h +++ b/indra/llcharacter/llmotioncontroller.h @@ -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(); diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index 2a8d03d431..d91cba4423 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -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; } diff --git a/indra/llcommon/llenum.h b/indra/llcommon/llenum.h index 7443fe9d0f..7d48b91005 100644 --- a/indra/llcommon/llenum.h +++ b/indra/llcommon/llenum.h @@ -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); diff --git a/indra/llcommon/metaclass.cpp b/indra/llcommon/metaclass.cpp index 29ad20e6b6..0cd5179f04 100644 --- a/indra/llcommon/metaclass.cpp +++ b/indra/llcommon/metaclass.cpp @@ -8,7 +8,10 @@ * $License$ */ +#include "linden_common.h" + #include "metaclass.h" + #include "metaproperty.h" #include "reflective.h" diff --git a/indra/llcommon/metaproperty.cpp b/indra/llcommon/metaproperty.cpp index adcda03389..25a98f47f3 100644 --- a/indra/llcommon/metaproperty.cpp +++ b/indra/llcommon/metaproperty.cpp @@ -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) : diff --git a/indra/llcommon/reflective.cpp b/indra/llcommon/reflective.cpp index 039a500575..d24aac41bc 100644 --- a/indra/llcommon/reflective.cpp +++ b/indra/llcommon/reflective.cpp @@ -7,6 +7,8 @@ * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc. * $License$ */ + +#include "linden_common.h" #include "reflective.h" diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h index fe51185153..d50c4f0d3b 100644 --- a/indra/llinventory/llparcel.h +++ b/indra/llinventory/llparcel.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; } diff --git a/indra/llinventory/llparcelflags.h b/indra/llinventory/llparcelflags.h index d78f9b630b..9bf7687272 100644 --- a/indra/llinventory/llparcelflags.h +++ b/indra/llinventory/llparcelflags.h @@ -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 diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index a7d07bc712..2db44d39d1 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -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; } diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h index ef9c5d4769..13fdef3850 100644 --- a/indra/llmath/v4color.h +++ b/indra/llmath/v4color.h @@ -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]; } diff --git a/indra/llmessage/llteleportflags.h b/indra/llmessage/llteleportflags.h index 001d05d109..fd54814ce5 100644 --- a/indra/llmessage/llteleportflags.h +++ b/indra/llmessage/llteleportflags.h @@ -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 diff --git a/indra/llmessage/machine.h b/indra/llmessage/machine.h index b5efe717d8..55e3aa0b3c 100644 --- a/indra/llmessage/machine.h +++ b/indra/llmessage/machine.h @@ -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. diff --git a/indra/llmessage/net.cpp b/indra/llmessage/net.cpp index 8cd7180f9a..2d3215f47c 100644 --- a/indra/llmessage/net.cpp +++ b/indra/llmessage/net.cpp @@ -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); } diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h index ab1fc4f719..b5a46a41e6 100644 --- a/indra/llprimitive/llprimitive.h +++ b/indra/llprimitive/llprimitive.h @@ -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(); diff --git a/indra/llprimitive/lltreeparams.h b/indra/llprimitive/lltreeparams.h index fa55f584e3..957a42f3d3 100644 --- a/indra/llprimitive/lltreeparams.h +++ b/indra/llprimitive/lltreeparams.h @@ -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}; diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 711d3b0ce8..793f97dc64 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -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&); diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp index 48ff6afbd5..f15383c6f7 100644 --- a/indra/llui/lltextbox.cpp +++ b/indra/llui/lltextbox.cpp @@ -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")) { diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 1c2ac677df..f07cbec328 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -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); } }; diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 1fab00b524..dbc635830b 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -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--; diff --git a/indra/llui/llviewquery.cpp b/indra/llui/llviewquery.cpp index c7ae4245dd..647e5e5707 100644 --- a/indra/llui/llviewquery.cpp +++ b/indra/llui/llviewquery.cpp @@ -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()); } diff --git a/indra/llxml/llxmlnode.h b/indra/llxml/llxmlnode.h index 24fccb72c6..56e66f2f9d 100644 --- a/indra/llxml/llxmlnode.h +++ b/indra/llxml/llxmlnode.h @@ -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; diff --git a/indra/lscript/lscript_library.h b/indra/lscript/lscript_library.h index ed6e3bc1de..b5fdfc7a22 100644 --- a/indra/lscript/lscript_library.h +++ b/indra/lscript/lscript_library.h @@ -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) { diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index a6d1deea1e..74fbe2c7f2 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -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 diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index f2cb9ea9ca..6713ea3eb2 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -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; } diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 2ee6634467..c6d11b5ae5 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -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; } diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 782775d338..48c58dbb4c 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -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; } diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h index 8cdaa893c8..ccd64ab6c8 100644 --- a/indra/newview/lldriverparam.h +++ b/indra/newview/lldriverparam.h @@ -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 diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 14f3d4ad2b..33389e00e9 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -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; } diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 63548b080a..a304d52f13 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -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; } diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index 3107b062b7..2e9dba3af4 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -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(); diff --git a/indra/newview/llflexibleobject.h b/indra/newview/llflexibleobject.h index 3a26604913..c814f67b91 100644 --- a/indra/newview/llflexibleobject.h +++ b/indra/newview/llflexibleobject.h @@ -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; diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 63b5262ced..ff7e8a41b7 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -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"); diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index 75c68acb78..f4769cc18f 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -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(); } } diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index b1143c4e7b..1e9acc96c1 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -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 diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index dc34291f24..1c287a187a 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -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); } diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index 90490f6f9b..d850c6812f 100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -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); diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h index 071e0bc5cd..e27955c324 100644 --- a/indra/newview/llfloatertopobjects.h +++ b/indra/newview/llfloatertopobjects.h @@ -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(); diff --git a/indra/newview/llimpanel.h b/indra/newview/llimpanel.h index 5348308a83..28ea002583 100644 --- a/indra/newview/llimpanel.h +++ b/indra/newview/llimpanel.h @@ -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); diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 724ef8a847..7db88b60a2 100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -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" diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 158421f7a0..a83b460e71 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -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" diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 58a5969792..c3d4551032 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -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"); diff --git a/indra/newview/llpolymesh.h b/indra/newview/llpolymesh.h index 577f5c7dfb..1d09d6a1d3 100644 --- a/indra/newview/llpolymesh.h +++ b/indra/newview/llpolymesh.h @@ -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 diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 3bfe913ab4..d91bb7d5cf 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -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; } diff --git a/indra/newview/llsrv.cpp b/indra/newview/llsrv.cpp index cd05d9c107..7669eb994a 100644 --- a/indra/newview/llsrv.cpp +++ b/indra/newview/llsrv.cpp @@ -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; diff --git a/indra/newview/llsrv.h b/indra/newview/llsrv.h index 14a64e639e..fde4f3915d 100644 --- a/indra/newview/llsrv.h +++ b/indra/newview/llsrv.h @@ -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); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 72aca1999e..bc27d9af9f 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -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))); diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index c44c7acffe..0182cae3b7 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -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 diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 11a95d4837..178c83f61e 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -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; diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h index 1dd0f0b657..d60d4eab6c 100644 --- a/indra/newview/lltexlayer.h +++ b/indra/newview/lltexlayer.h @@ -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]; }; diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 683f8b56cf..d51fffb541 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -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); diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h index d52d522b59..6fda81de51 100644 --- a/indra/newview/llviewerjointattachment.h +++ b/indra/newview/llviewerjointattachment.h @@ -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; diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 2b69c20d15..600d7d3ca2 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -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; } }; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index aa6993098d..9f034b6afd 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -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) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 75d7a97372..5763f988de 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -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; } diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index 836cd7add7..763cbe1419 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -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; } diff --git a/indra/newview/llvowater.h b/indra/newview/llvowater.h index e3df822037..f7b3e34f8d 100644 --- a/indra/newview/llvowater.h +++ b/indra/newview/llvowater.h @@ -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; diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index eba306a248..23a2c0b758 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -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") |