diff options
37 files changed, 175 insertions, 108 deletions
| diff --git a/indra/llmath/v2math.h b/indra/llmath/v2math.h index 9fef8851cc..65f3714313 100644 --- a/indra/llmath/v2math.h +++ b/indra/llmath/v2math.h @@ -70,6 +70,8 @@ class LLVector2  		void	setVec(const LLVector2 &vec);	// deprecated  		void	setVec(const F32 *vec);			// deprecated +		inline bool isFinite() const; // checks to see if all values of LLVector2 are finite +  		F32		length() const;				// Returns magnitude of LLVector2  		F32		lengthSquared() const;		// Returns magnitude squared of LLVector2  		F32		normalize();					// Normalizes and returns the magnitude of LLVector2 @@ -215,6 +217,7 @@ inline void	LLVector2::setVec(const F32 *vec)  	mV[VY] = vec[VY];  } +  // LLVector2 Magnitude and Normalization Functions  inline F32 LLVector2::length(void) const @@ -247,6 +250,12 @@ inline F32		LLVector2::normalize(void)  	return (mag);  } +// checker +inline bool LLVector2::isFinite() const +{ +	return (llfinite(mV[VX]) && llfinite(mV[VY])); +} +  // deprecated  inline F32		LLVector2::magVec(void) const  { diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 8addee606b..ff47c57c70 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1738,8 +1738,18 @@ BOOL LLImageGL::getMask(const LLVector2 &tc)  	if (mPickMask)  	{ -		F32 u = tc.mV[0] - floorf(tc.mV[0]); -		F32 v = tc.mV[1] - floorf(tc.mV[1]); +		F32 u,v; +		if (LL_LIKELY(tc.isFinite())) +		{ +			u = tc.mV[0] - floorf(tc.mV[0]); +			v = tc.mV[1] - floorf(tc.mV[1]); +		} +		else +		{ +			LL_WARNS_ONCE("render") << "Ugh, non-finite u/v in mask pick" << LL_ENDL; +			u = v = 0.f; +			llassert(false); +		}  		if (LL_UNLIKELY(u < 0.f || u > 1.f ||  				v < 0.f || v > 1.f)) diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 13e71ed936..5be1bf1665 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1544,16 +1544,14 @@ void LLWindowWin32::initCursors()  	mCursor[ UI_CURSOR_TOOLZOOMIN ] = LoadCursor(module, TEXT("TOOLZOOMIN"));  	mCursor[ UI_CURSOR_TOOLPICKOBJECT3 ] = LoadCursor(module, TEXT("TOOLPICKOBJECT3"));  	mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); +	mCursor[ UI_CURSOR_TOOLSIT ]	= LoadCursor(module, TEXT("TOOLSIT")); +	mCursor[ UI_CURSOR_TOOLBUY ]	= LoadCursor(module, TEXT("TOOLBUY")); +	mCursor[ UI_CURSOR_TOOLOPEN ]	= LoadCursor(module, TEXT("TOOLOPEN"));  	// Color cursors -	gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "res", "toolbuy.cur"); - -	mCursor[UI_CURSOR_TOOLSIT] = LoadCursorFromFile(utf8str_to_utf16str(gDirUtilp->findSkinnedFilename("textures", "toolsit.cur")).c_str()); -	mCursor[UI_CURSOR_TOOLBUY] = LoadCursorFromFile(utf8str_to_utf16str(gDirUtilp->findSkinnedFilename("textures", "toolbuy.cur")).c_str()); -	mCursor[UI_CURSOR_TOOLOPEN] = LoadCursorFromFile(utf8str_to_utf16str(gDirUtilp->findSkinnedFilename("textures", "toolopen.cur")).c_str()); -	mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); -	mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); -	mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); +	mCursor[ UI_CURSOR_TOOLPLAY ]		= loadColorCursor(TEXT("TOOLPLAY")); +	mCursor[ UI_CURSOR_TOOLPAUSE ]		= loadColorCursor(TEXT("TOOLPAUSE")); +	mCursor[ UI_CURSOR_TOOLMEDIAOPEN ]	= loadColorCursor(TEXT("TOOLMEDIAOPEN"));  	// Note: custom cursors that are not found make LoadCursor() return NULL.  	for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 8ad3b2085d..0a2ae1ed52 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1156,6 +1156,9 @@ if (WINDOWS)          res/toolpickobject2.cur          res/toolpickobject3.cur          res/toolpipette.cur +        res/toolbuy.cur +        res/toolopen.cur +        res/toolsit.cur          )      set_source_files_properties(${viewer_RESOURCE_FILES} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 55e28fc59b..bebf6678d4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4,13 +4,14 @@      <key>AFKTimeout</key>      <map>        <key>Comment</key> -      <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never)</string> +      <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never). +	  Valid values are: 0, 120, 300, 600, 1800</string>	          <key>Persist</key>        <integer>1</integer>        <key>Type</key>        <string>S32</string>        <key>Value</key> -      <real>0</real> +      <real>300</real>      </map>      <key>AdvanceSnapshot</key>      <map> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index c5d7f6f118..5c54146caa 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -2296,6 +2296,13 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)  		{  			resetAxes(mAutoPilotTargetFacing);  		} +		// Restore previous flying state before invoking mAutoPilotFinishedCallback to allow +		// callback function to change the flying state (like in near_sit_down_point()). +		// If the user cancelled, don't change the fly state +		if (!user_cancel) +		{ +			setFlying(mAutoPilotFlyOnStop); +		}  		//NB: auto pilot can terminate for a reason other than reaching the destination  		if (mAutoPilotFinishedCallback)  		{ @@ -2303,11 +2310,6 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)  		}  		mLeaderID = LLUUID::null; -		// If the user cancelled, don't change the fly state -		if (!user_cancel) -		{ -			setFlying(mAutoPilotFlyOnStop); -		}  		setControlFlags(AGENT_CONTROL_STOP);  		if (user_cancel && !mAutoPilotBehaviorName.empty()) diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index ef946ac49e..e3e66fa00d 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -442,7 +442,6 @@ void LLRenderPass::renderTexture(U32 type, U32 mask)  void LLRenderPass::pushBatches(U32 type, U32 mask, BOOL texture)  { -	llpushcallstacks ;  	for (LLCullResult::drawinfo_list_t::iterator i = gPipeline.beginRenderMap(type); i != gPipeline.endRenderMap(type); ++i)	  	{  		LLDrawInfo* pparams = *i; diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index d09d4a412f..19cdccb630 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -825,7 +825,6 @@ void LLBumpImageList::addTextureStats(U8 bump, const LLUUID& base_image_id, F32  void LLBumpImageList::updateImages()  {	 -	llpushcallstacks ;  	for (bump_image_map_t::iterator iter = mBrightnessEntries.begin(); iter != mBrightnessEntries.end(); )  	{  		bump_image_map_t::iterator curiter = iter++; @@ -852,7 +851,6 @@ void LLBumpImageList::updateImages()  			}  		}  	} -	llpushcallstacks ;  	for (bump_image_map_t::iterator iter = mDarknessEntries.begin(); iter != mDarknessEntries.end(); )  	{  		bump_image_map_t::iterator curiter = iter++; @@ -879,7 +877,6 @@ void LLBumpImageList::updateImages()  			}  		}  	} -	llpushcallstacks ;  } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 9de69a8173..a1336815f7 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -867,7 +867,6 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  								const LLMatrix4& mat_vert, const LLMatrix3& mat_normal,  								const U16 &index_offset)  { -	llpushcallstacks ;  	const LLVolumeFace &vf = volume.getVolumeFace(f);  	S32 num_vertices = (S32)vf.mVertices.size();  	S32 num_indices = LLPipeline::sUseTriStrips ? (S32)vf.mTriStrip.size() : (S32) vf.mIndices.size(); diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index bf7c735488..959395ff82 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -75,7 +75,9 @@ public:  		mPosY(0),  		mPosZ(0),  		mLoaded(false)  -	{} +	{ +		mHandle.bind(this); +	}  	void setLandmarkID(const LLUUID& id) { mLandmarkID = id; }  	const LLUUID& getLandmarkId() const { return mLandmarkID; } @@ -122,17 +124,21 @@ private:  		if(LLLandmarkActions::getLandmarkGlobalPos(mLandmarkID, g_pos))  		{  			LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(g_pos, -				boost::bind(&LLLandmarkInfoGetter::landmarkNameCallback, this, _1, _2, _3, _4)); +				boost::bind(&LLLandmarkInfoGetter::landmarkNameCallback, static_cast<LLHandle<LLLandmarkInfoGetter> >(mHandle), _1, _2, _3, _4));  		}  	} -	void landmarkNameCallback(const std::string& name, S32 x, S32 y, S32 z) +	static void landmarkNameCallback(LLHandle<LLLandmarkInfoGetter> handle, const std::string& name, S32 x, S32 y, S32 z)  	{ -		mPosX = x; -		mPosY = y; -		mPosZ = z; -		mName = name; -		mLoaded = true; +		LLLandmarkInfoGetter* getter = handle.get(); +		if (getter) +		{ +			getter->mPosX = x; +			getter->mPosY = y; +			getter->mPosZ = z; +			getter->mName = name; +			getter->mLoaded = true; +		}  	}  	LLUUID mLandmarkID; @@ -141,6 +147,7 @@ private:  	S32 mPosY;  	S32 mPosZ;  	bool mLoaded; +	LLRootHandle<LLLandmarkInfoGetter> mHandle;  };  /** diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 7a4febec20..4780e985ca 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1437,7 +1437,13 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)  	}  	sSession = session; -	sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3, _4)); + +	static boost::signals2::connection prev_channel_state_changed_connection; +	// disconnect previously connected callback to avoid have invalid sSession in onVoiceChannelStateChanged() +	prev_channel_state_changed_connection.disconnect(); +	prev_channel_state_changed_connection = +		sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3, _4)); +  	if(sCurrentSessionlName != session->mName)  	{  		sPreviousSessionlName = sCurrentSessionlName; diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 1853b511be..70053a7b48 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -199,7 +199,12 @@ void LLFloaterMove::setFlyingMode(BOOL fly)  	if (instance)  	{  		instance->setFlyingModeImpl(fly); -		instance->showModeButtons(!fly); +		LLVOAvatarSelf* avatar_object = gAgent.getAvatarObject(); +		BOOL is_sitting = avatar_object +			&& (avatar_object->getRegion() != NULL) +			&& (!avatar_object->isDead()) +			&& avatar_object->isSitting(); +		instance->showModeButtons(!fly && !is_sitting);  	}  	if (fly)  	{ @@ -695,6 +700,7 @@ void LLPanelStandStopFlying::onStandButtonClick()  	gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);  	setFocus(FALSE); // EXT-482 +	mStandButton->setVisible(FALSE); // force visibility changing to avoid seeing Stand & Move buttons at once.  }  void LLPanelStandStopFlying::onStopFlyingButtonClick() diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3d0dfbed40..fab1d983c2 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4169,6 +4169,9 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)  	}  	gAgent.setForceMouselook(force_mouselook); +	// Forcing turning off flying here to prevent flying after pressing "Stand" +	// to stand up from an object. See EXT-1655. +	gAgent.setFlying(FALSE);  	LLViewerObject* object = gObjectList.findObject(sitObjectID);  	if (object) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f5e83ed025..86987f4c78 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -655,6 +655,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,  	mNameMute(FALSE),  	mRenderGroupTitles(sRenderGroupTitles),  	mNameAppearance(FALSE), +	mNameCloud(FALSE),  	mFirstTEMessageReceived( FALSE ),  	mFirstAppearanceMessageReceived( FALSE ),  	mCulled( FALSE ), @@ -2769,25 +2770,20 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)  		if (mNameText.notNull() && firstname && lastname)  		{ -			BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY)  != mSignaledAnimations.end(); -			BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); -			BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); -			BOOL is_muted; -			if (isSelf()) -			{ -				is_muted = FALSE; -			} -			else -			{ -				is_muted = LLMuteList::getInstance()->isMuted(getID()); -			} +			const BOOL is_away = mSignaledAnimations.find(ANIM_AGENT_AWAY)  != mSignaledAnimations.end(); +			const BOOL is_busy = mSignaledAnimations.find(ANIM_AGENT_BUSY) != mSignaledAnimations.end(); +			const BOOL is_appearance = mSignaledAnimations.find(ANIM_AGENT_CUSTOMIZE) != mSignaledAnimations.end(); +			const BOOL is_muted = isSelf() ? FALSE : LLMuteList::getInstance()->isMuted(getID()); +			const BOOL is_cloud = getIsCloud();  			if (mNameString.empty() ||  				new_name ||  				(!title && !mTitle.empty()) ||  				(title && mTitle != title->getString()) ||  				(is_away != mNameAway || is_busy != mNameBusy || is_muted != mNameMute) -				|| is_appearance != mNameAppearance) +				|| is_appearance != mNameAppearance  +				|| is_cloud != mNameCloud +				)  			{  				std::string line;  				if (!sRenderGroupTitles) @@ -2841,7 +2837,12 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)  					}  					line += ")";  				} -				if (is_appearance) +				if (is_cloud) +				{ +					line += "\n"; +					line += "(" + LLTrans::getString("LoadingData") + ")"; +				} +				else if (is_appearance)  				{  					line += "\n";  					line += LLTrans::getString("AvatarEditingAppearance"); @@ -2850,6 +2851,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)  				mNameBusy = is_busy;  				mNameMute = is_muted;  				mNameAppearance = is_appearance; +				mNameCloud = is_cloud;  				mTitle = title ? title->getString() : "";  				LLStringFn::replace_ascii_controlchars(mTitle,LL_UNKNOWN_CHAR);  				mNameString = utf8str_to_wstring(line); @@ -5651,6 +5653,8 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)  	mDrawable->mXform.setRotation(mDrawable->getWorldRotation() * inv_obj_rot);  	gPipeline.markMoved(mDrawable, TRUE); +	// Notice that removing sitDown() from here causes avatars sitting on +	// objects to be not rendered for new arrivals. See EXT-6835 and EXT-1655.  	sitDown(TRUE);  	mRoot.getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject  	mRoot.setPosition(getPosition()); @@ -5823,27 +5827,29 @@ BOOL LLVOAvatar::isVisible() const  		&& (mDrawable->isVisible() || mIsDummy);  } -// call periodically to keep isFullyLoaded up to date. -// returns true if the value has changed. -BOOL LLVOAvatar::updateIsFullyLoaded() +// Determine if we have enough avatar data to render +BOOL LLVOAvatar::getIsCloud()  { -    // a "heuristic" to determine if we have enough avatar data to render -    // (to avoid rendering a "Ruth" - DEV-3168) -	BOOL loading = FALSE; - -	// do we have a shape? +	// Do we have a shape?  	if (visualParamWeightsAreDefault())  	{ -		loading = TRUE; +		return TRUE;  	}  	if (!isTextureDefined(TEX_LOWER_BAKED) ||   		!isTextureDefined(TEX_UPPER_BAKED) ||   		!isTextureDefined(TEX_HEAD_BAKED))  	{ -		loading = TRUE; +		return TRUE;  	} -	 +	return FALSE; +} + +// call periodically to keep isFullyLoaded up to date. +// returns true if the value has changed. +BOOL LLVOAvatar::updateIsFullyLoaded() +{ +	const BOOL loading = getIsCloud();  	updateRuthTimer(loading);  	return processFullyLoadedChange(loading);  } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index d5485413f4..55753233b0 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -247,7 +247,8 @@ public:  public:  	BOOL			isFullyLoaded() const;  protected: -	virtual BOOL	updateIsFullyLoaded(); +	virtual BOOL	getIsCloud(); +	BOOL			updateIsFullyLoaded();  	BOOL			processFullyLoadedChange(bool loading);  	void			updateRuthTimer(bool loading);  	F32 			calcMorphAmount(); @@ -828,6 +829,7 @@ private:  	BOOL	  		mNameBusy;  	BOOL	  		mNameMute;  	BOOL      		mNameAppearance; +	BOOL      		mNameCloud;  	BOOL      		mRenderGroupTitles;  	//-------------------------------------------------------------------- diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 98ca76ed01..5e9c139bc4 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -673,15 +673,6 @@ BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL  /*virtual*/   void LLVOAvatarSelf::updateVisualParams()  { -	for (U32 type = 0; type < WT_COUNT; type++) -	{ -		LLWearable *wearable = gAgentWearables.getTopWearable((EWearableType)type); -		if (wearable) -		{ -			wearable->writeToAvatar(); -		} -	} -  	LLVOAvatar::updateVisualParams();  } @@ -692,7 +683,14 @@ void LLVOAvatarSelf::idleUpdateAppearanceAnimation()  	gAgentWearables.animateAllWearableParams(calcMorphAmount(), FALSE);  	// apply wearable visual params to avatar -	updateVisualParams(); +	for (U32 type = 0; type < WT_COUNT; type++) +	{ +		LLWearable *wearable = gAgentWearables.getTopWearable((EWearableType)type); +		if (wearable) +		{ +			wearable->writeToAvatar(); +		} +	}  	//allow avatar to process updates  	LLVOAvatar::idleUpdateAppearanceAnimation(); @@ -1671,22 +1669,20 @@ void LLVOAvatarSelf::dumpTotalLocalTextureByteCount()  	llinfos << "Total Avatar LocTex GL:" << (gl_bytes/1024) << "KB" << llendl;  } -BOOL LLVOAvatarSelf::updateIsFullyLoaded() +BOOL LLVOAvatarSelf::getIsCloud()  { -	BOOL loading = FALSE; -  	// do we have our body parts?  	if (gAgentWearables.getWearableCount(WT_SHAPE) == 0 ||  		gAgentWearables.getWearableCount(WT_HAIR) == 0 ||  		gAgentWearables.getWearableCount(WT_EYES) == 0 ||  		gAgentWearables.getWearableCount(WT_SKIN) == 0)	  	{ -		loading = TRUE; +		return TRUE;  	}  	if (!isTextureDefined(TEX_HAIR, 0))  	{ -		loading = TRUE; +		return TRUE;  	}  	if (!mPreviousFullyLoaded) @@ -1694,13 +1690,13 @@ BOOL LLVOAvatarSelf::updateIsFullyLoaded()  		if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_LOWER].mTexLayerSet) &&  			(!isTextureDefined(TEX_LOWER_BAKED, 0)))  		{ -			loading = TRUE; +			return TRUE;  		}  		if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_UPPER].mTexLayerSet) &&  			(!isTextureDefined(TEX_UPPER_BAKED, 0)))  		{ -			loading = TRUE; +			return TRUE;  		}  		for (U32 i = 0; i < mBakedTextureDatas.size(); i++) @@ -1708,23 +1704,23 @@ BOOL LLVOAvatarSelf::updateIsFullyLoaded()  			if (i == BAKED_SKIRT && !isWearingWearableType(WT_SKIRT))  				continue; -			BakedTextureData& texture_data = mBakedTextureDatas[i]; +			const BakedTextureData& texture_data = mBakedTextureDatas[i];  			if (!isTextureDefined(texture_data.mTextureIndex, 0))  				continue;  			// Check for the case that texture is defined but not sufficiently loaded to display anything. -			LLViewerTexture* baked_img = getImage( texture_data.mTextureIndex, 0 ); +			const LLViewerTexture* baked_img = getImage( texture_data.mTextureIndex, 0 );  			if (!baked_img || !baked_img->hasGLTexture())  			{ -				loading = TRUE; +				return TRUE;  			} -  		}  	} -	return processFullyLoadedChange(loading); +	return FALSE;  } +  const LLUUID& LLVOAvatarSelf::grabLocalTexture(ETextureIndex type, U32 index) const  {  	if (canGrabLocalTexture(type, index)) diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 9514abc5bc..24a2896eb0 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -120,7 +120,7 @@ public:  	// Loading state  	//--------------------------------------------------------------------  public: -	/*virtual*/ BOOL    updateIsFullyLoaded(); +	/*virtual*/ BOOL    getIsCloud();  private:  	BOOL                mIsBaked; // are the stored baked textures up to date? diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index cb362d557c..95ceb0189c 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3293,7 +3293,6 @@ static LLFastTimer::DeclareTimer FTM_REBUILD_VBO("VBO Rebuilt");  void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  { -	llpushcallstacks ;  	if (group->changeLOD())  	{  		group->mLastUpdateDistance = group->mDistance; @@ -3524,7 +3523,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)  static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM("Volume Geometry");  void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)  { -	llpushcallstacks ;  	llassert(group);  	if (group && group->isState(LLSpatialGroup::MESH_DIRTY) && !group->isState(LLSpatialGroup::GEOM_DIRTY))  	{ @@ -3616,7 +3614,6 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)  void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort)  { -	llpushcallstacks ;  	//calculate maximum number of vertices to store in a single buffer  	U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcStride(group->mSpatialPartition->mVertexDataMask);  	max_vertices = llmin(max_vertices, (U32) 65535); diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h index da27e47dfb..6cabd5e10b 100644 --- a/indra/newview/res/resource.h +++ b/indra/newview/res/resource.h @@ -170,14 +170,12 @@  #define IDC_COMBO1                      1138  #define IDC_COMBO_FARM                  1138  #define ID_TESTMENU_TEST                40001 -#define IDC_STATIC                      -1  // Next default values for new objects  //   #ifdef APSTUDIO_INVOKED  #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE        159 -#define _APS_NEXT_RESOURCE_VALUE        167 +#define _APS_NEXT_RESOURCE_VALUE        173  #define _APS_NEXT_COMMAND_VALUE         40002  #define _APS_NEXT_CONTROL_VALUE         1139  #define _APS_NEXT_SYMED_VALUE           101 diff --git a/indra/newview/res/toolbuy.cur b/indra/newview/res/toolbuy.curBinary files differ new file mode 100644 index 0000000000..a1bc278116 --- /dev/null +++ b/indra/newview/res/toolbuy.cur diff --git a/indra/newview/res/toolopen.cur b/indra/newview/res/toolopen.curBinary files differ new file mode 100644 index 0000000000..a72cdfe4c0 --- /dev/null +++ b/indra/newview/res/toolopen.cur diff --git a/indra/newview/res/toolsit.cur b/indra/newview/res/toolsit.curBinary files differ new file mode 100644 index 0000000000..6327bdb281 --- /dev/null +++ b/indra/newview/res/toolsit.cur diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index 3a20d91129..bb3378f490 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -119,6 +119,9 @@ TOOLPIPETTE             CURSOR                  "toolpipette.cur"  TOOLPLAY                CURSOR                  "toolplay.cur"  TOOLPAUSE               CURSOR                  "toolpause.cur"  TOOLMEDIAOPEN           CURSOR                  "toolmediaopen.cur" +TOOLBUY                 CURSOR                  "toolbuy.cur" +TOOLOPEN                CURSOR                  "toolopen.cur" +TOOLSIT                 CURSOR                  "toolsit.cur"  /////////////////////////////////////////////////////////////////////////////  // diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index 4618fe536d..08ffafd5a6 100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Min balance"/> -	<button label="Køb" name="buyL" tool_tip="Klik for at købe flere L$"/> +	<button label="Køb L$" name="buyL" tool_tip="Klik for at købe flere L$"/>  	<text name="TimeText" tool_tip="Nuværende tid (Pacific)">  		24:00 PST  	</text> diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml index 803bd1b5ab..3dc6997320 100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -22,7 +22,7 @@  		[AMT] L$  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand"/> -	<button label=" " name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> +	<button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>  	<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">  		24:00 H PST  	</text> diff --git a/indra/newview/skins/default/xui/en/mime_types.xml b/indra/newview/skins/default/xui/en/mime_types.xml index 76c0d027f3..8e1e5ff062 100644 --- a/indra/newview/skins/default/xui/en/mime_types.xml +++ b/indra/newview/skins/default/xui/en/mime_types.xml @@ -138,6 +138,9 @@  		<widgettype>  			audio  		</widgettype> +		<impl> +			media_plugin_quicktime +		</impl>  	</mimetype>  	<mimetype name="video/*">  		<label name="video2_label"> @@ -146,6 +149,9 @@  		<widgettype>  			movie  		</widgettype> +		<impl> +			media_plugin_quicktime +		</impl>  	</mimetype>  	<mimetype name="image/*">  		<label name="image2_label"> diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml index 05cd850725..4748c14554 100644 --- a/indra/newview/skins/default/xui/en/mime_types_linux.xml +++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml @@ -138,6 +138,9 @@  		<widgettype>  			audio  		</widgettype> +		<impl> +			media_plugin_gstreamer +		</impl>  	</mimetype>  	<mimetype name="video/*">  		<label name="video2_label"> @@ -146,6 +149,9 @@  		<widgettype>  			movie  		</widgettype> +		<impl> +			media_plugin_gstreamer +		</impl>  	</mimetype>  	<mimetype name="image/*">  		<label name="image2_label"> diff --git a/indra/newview/skins/default/xui/en/mime_types_mac.xml b/indra/newview/skins/default/xui/en/mime_types_mac.xml index 76c0d027f3..8e1e5ff062 100644 --- a/indra/newview/skins/default/xui/en/mime_types_mac.xml +++ b/indra/newview/skins/default/xui/en/mime_types_mac.xml @@ -138,6 +138,9 @@  		<widgettype>  			audio  		</widgettype> +		<impl> +			media_plugin_quicktime +		</impl>  	</mimetype>  	<mimetype name="video/*">  		<label name="video2_label"> @@ -146,6 +149,9 @@  		<widgettype>  			movie  		</widgettype> +		<impl> +			media_plugin_quicktime +		</impl>  	</mimetype>  	<mimetype name="image/*">  		<label name="image2_label"> diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 8c7de22cf8..690d2971ee 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -62,11 +62,11 @@       halign="right"       font="SansSerifSmall"       follows="right|top" -     image_selected="BuyArrow_Over" -     image_unselected="BuyArrow_Over" -     image_pressed="BuyArrow_Press" +     image_selected="spacer35.tga" +     image_unselected="spacer35.tga" +     image_pressed="spacer35.tga"       height="16" -     label="Buy" +     label="Buy L$"       label_color="EmphasisColor"       left_pad="0"       label_shadow="false" @@ -99,7 +99,7 @@       image_pressed="Pause_Press"       image_pressed_selected="Play_Press"       is_toggle="true" -     left_pad="20" +     left_pad="15"       top="1"       name="media_toggle_btn"       tool_tip="Start/Stop All Media (Music, Video, Web pages)" @@ -112,12 +112,12 @@       image_pressed="Audio_Press"       image_unselected="Audio_Off"       is_toggle="true" -     left_pad="10" +     left_pad="5"       top="2"       name="volume_btn"       tool_tip="Global Volume Control"       width="16" /> -  <!--  <text +    <text       follows="right|top"       halign="center"       height="12" @@ -125,5 +125,5 @@       left_delta="0"       name="stat_btn"       top_delta="0" -     width="20"/>--> +     width="20"/>  </panel> diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml index 1afa68106e..d4404fd9b5 100644 --- a/indra/newview/skins/default/xui/es/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml @@ -22,7 +22,7 @@  		[AMT] L$  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Mi saldo"/> -	<button label="Comprar" name="buyL" tool_tip="Pulsa para comprar más L$"/> +	<button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>  	<text name="TimeText" tool_tip="Hora actual (Pacífico)">  		24:00 AM PST  	</text> diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml index 657bf792cf..dffb1d4238 100644 --- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml @@ -22,7 +22,7 @@  		[AMT] L$  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Mon solde"/> -	<button label="Acheter" name="buyL" tool_tip="Cliquez pour acheter plus de L$"/> +	<button label="Acheter L$" name="buyL" tool_tip="Cliquez pour acheter plus de L$"/>  	<text name="TimeText" tool_tip="Heure actuelle (Pacifique)">  		00h00 PST  	</text> diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index 584ac5e4b4..4c860ff479 100644 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Il mio saldo"/> -	<button label="Acquista" name="buyL" tool_tip="Clicca per comprare più L$"/> +	<button label="Acquista L$" name="buyL" tool_tip="Clicca per comprare più L$"/>  	<text name="TimeText" tool_tip="Orario attuale (Pacifico)">  		24:00, ora del Pacifico  	</text> diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml index 923455abba..8a848f496d 100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="所持金"/> -	<button label="購入" name="buyL" tool_tip="クリックして L$ を購入します"/> +	<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>  	<text name="TimeText" tool_tip="現在時刻(太平洋)">  		24:00 AM PST  	</text> diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml index cd2ae14f6c..313c2732ff 100644 --- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Bilans"/> -	<button label="Kup" name="buyL" tool_tip="Kliknij aby kupić L$"/> +	<button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupić L$"/>  	<text name="TimeText" tool_tip="Obecny Czas (Pacyficzny)">  		24:00 AM PST  	</text> diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml index ae2879f4a9..a320d9d56d 100644 --- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<button label="" label_selected="" name="buycurrency" tool_tip="Meu saldo"/> -	<button label="Comprar" name="buyL" tool_tip="Comprar mais L$"/> +	<button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/>  	<text name="TimeText" tool_tip="Hora atual (Pacífico)">  		24:00 AM PST  	</text> diff --git a/indra/win_updater/CMakeLists.txt b/indra/win_updater/CMakeLists.txt index 82347adf20..210486c668 100644 --- a/indra/win_updater/CMakeLists.txt +++ b/indra/win_updater/CMakeLists.txt @@ -6,6 +6,13 @@ include(00-Common)  include(LLCommon)  include(Linking) +# *HACK - override msvcrt implementation (intialized on 00-Common) to be +# statically linked for the installer this relies on vc taking the last flag on +# the command line +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") +  include_directories(      ${LLCOMMON_INCLUDE_DIRS}      ) @@ -30,9 +37,9 @@ target_link_libraries(windows-updater  set_target_properties(windows-updater      PROPERTIES -    LINK_FLAGS "/NODEFAULTLIB:LIBCMT" -    LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\"" +    LINK_FLAGS "/NODEFAULTLIB:MSVCRT" +    LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;MSVCRT\""      )  # The windows-updater doesn't link against anything non-system, apparently -#ll_deploy_sharedlibs_command(windows-updater)
\ No newline at end of file +#ll_deploy_sharedlibs_command(windows-updater) diff --git a/install.xml b/install.xml index f5e26107d3..8a7bac42eb 100644 --- a/install.xml +++ b/install.xml @@ -254,9 +254,9 @@            <key>windows</key>            <map>              <key>md5sum</key> -            <string>53e5ab7affff7121a5af2f82b4d58b54</string> +            <string>78ccac8aaf8ea5bec482dfbcdbeb1651</string>              <key>url</key> -            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.19.6-windows-20091016.tar.bz2</uri> +            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.19.6-windows-20100414.tar.bz2</uri>            </map>          </map>        </map> | 
