Merge LGPL

Fri, 21 Feb 2014 16:45:23 -0800

author
Tank_Master
date
Fri, 21 Feb 2014 16:45:23 -0800
changeset 40761
38f2a9fd24ee
parent 40760
b53af5dd80c2
parent 40641
df2b183727fc
child 40762
0cb378196ad6

Merge LGPL

.hgtags file | annotate | diff | revisions
indra/llmessage/llcurl.cpp file | annotate | diff | revisions
indra/newview/VIEWER_VERSION.txt file | annotate | diff | revisions
indra/newview/app_settings/settings.xml file | annotate | diff | revisions
indra/newview/skins/ansastorm/textures/legacy/icon_avatar_online.tga file | annotate | diff | revisions
indra/newview/skins/default/xui/en/notifications.xml file | annotate | diff | revisions
indra/newview/skins/firestorm/textures/legacy/icon_avatar_online.tga file | annotate | diff | revisions
indra/newview/skins/latency/textures/legacy/icon_avatar_online.tga file | annotate | diff | revisions
indra/newview/skins/vintage/textures/legacy/icon_avatar_online.tga file | annotate | diff | revisions
     1.1 --- a/.hgtags	Sat Feb 15 13:10:12 2014 -0800
     1.2 +++ b/.hgtags	Fri Feb 21 16:45:23 2014 -0800
     1.3 @@ -510,3 +510,4 @@
     1.4  88bbfd7a6971033f3aa103f3a3500ceb4c73521b 3.6.12-release
     1.5  0d9b9e50f1a8880e05f15688a9ec7d09e0e81013 3.6.13-release
     1.6  5d746de933a98ca17887cde2fece80e9c7ab0b98 3.7.0-release
     1.7 +dcb4981ce255841b6083d8f65444b65d5a733a17 3.7.1-release
     2.1 --- a/indra/Version	Sat Feb 15 13:10:12 2014 -0800
     2.2 +++ b/indra/Version	Fri Feb 21 16:45:23 2014 -0800
     2.3 @@ -1,1 +1,1 @@
     2.4 -VERSION_VIEWER=4.5.2
     2.5 +VERSION_VIEWER=4.6.0
     3.1 --- a/indra/cmake/00-Common.cmake	Sat Feb 15 13:10:12 2014 -0800
     3.2 +++ b/indra/cmake/00-Common.cmake	Fri Feb 21 16:45:23 2014 -0800
     3.3 @@ -338,8 +338,9 @@
     3.4  
     3.5  else (STANDALONE)
     3.6    set(${ARCH}_linux_INCLUDES
     3.7 -      ELFIO
     3.8        atk-1.0
     3.9 +      cairo
    3.10 +      freetype
    3.11        glib-2.0
    3.12        gstreamer-0.10
    3.13        gtk-2.0
     4.1 --- a/indra/cmake/FMODEX.cmake	Sat Feb 15 13:10:12 2014 -0800
     4.2 +++ b/indra/cmake/FMODEX.cmake	Fri Feb 21 16:45:23 2014 -0800
     4.3 @@ -40,9 +40,15 @@
     4.4              debug fmodexL
     4.5              optimized fmodex)
     4.6        elseif (LINUX)
     4.7 -        set(FMODEX_LIBRARY 
     4.8 -            debug fmodexL
     4.9 -            optimized fmodex)
    4.10 +        if(ND_BUILD64BIT_ARCH)
    4.11 +          set(FMODEX_LIBRARY
    4.12 +              debug fmodexL64
    4.13 +              optimized fmodex64)
    4.14 +        else(ND_BUILD64BIT_ARCH)
    4.15 +          set(FMODEX_LIBRARY
    4.16 +              debug fmodexL
    4.17 +              optimized fmodex)
    4.18 +        endif(ND_BUILD64BIT_ARCH)
    4.19        endif (WINDOWS)
    4.20        set(FMODEX_LIBRARIES ${FMODEX_LIBRARY})
    4.21        set(FMODEX_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodex)
     5.1 --- a/indra/cmake/UI.cmake	Sat Feb 15 13:10:12 2014 -0800
     5.2 +++ b/indra/cmake/UI.cmake	Fri Feb 21 16:45:23 2014 -0800
     5.3 @@ -34,12 +34,11 @@
     5.4  else (STANDALONE)
     5.5    use_prebuilt_binary(gtk-atk-pango-glib)
     5.6    if (LINUX)
     5.7 -    set(UI_LIBRARIES
     5.8 +    set(UI_LIB_NAMES
     5.9          freetype
    5.10          atk-1.0
    5.11          gdk-x11-2.0
    5.12          gdk_pixbuf-2.0
    5.13 -        Xinerama
    5.14          glib-2.0
    5.15          gmodule-2.0
    5.16          gobject-2.0
    5.17 @@ -49,8 +48,30 @@
    5.18          pangoft2-1.0
    5.19          pangox-1.0
    5.20          pangoxft-1.0
    5.21 -        ${FREETYPE_LIBRARIES}
    5.22          )
    5.23 +    foreach(libname ${UI_LIB_NAMES})
    5.24 +      find_library(UI_LIB_${libname}
    5.25 +                   NAMES ${libname}
    5.26 +                   PATHS
    5.27 +                     debug ${LIBS_PREBUILT_DIR}/lib/debug
    5.28 +                     optimized ${LIBS_PREBUILT_DIR}/lib/release
    5.29 +                   NO_DEFAULT_PATH
    5.30 +                   )
    5.31 +      set(UI_LIBRARIES ${UI_LIBRARIES} ${UI_LIB_${libname}})
    5.32 +    endforeach(libname)
    5.33 +
    5.34 +    if (ND_BUILD64BIT_ARCH)
    5.35 +      find_library(UI_LIB_gio-2.0
    5.36 +                   NAMES gio-2.0
    5.37 +                   PATHS
    5.38 +                     debug ${LIBS_PREBUILT_DIR}/lib/debug
    5.39 +                     optimized ${LIBS_PREBUILT_DIR}/lib/release
    5.40 +                   NO_DEFAULT_PATH
    5.41 +                   )
    5.42 +      set(UI_LIBRARIES ${UI_LIBRARIES} ${UI_LIB_gio-2.0})
    5.43 +    endif(ND_BUILD64BIT_ARCH)
    5.44 +
    5.45 +    set(UI_LIBRARIES ${UI_LIBRARIES} Xinerama)
    5.46    endif (LINUX)
    5.47  
    5.48    include_directories (
     6.1 --- a/indra/llappearance/llavatarappearance.cpp	Sat Feb 15 13:10:12 2014 -0800
     6.2 +++ b/indra/llappearance/llavatarappearance.cpp	Fri Feb 21 16:45:23 2014 -0800
     6.3 @@ -81,6 +81,7 @@
     6.4  	~LLAvatarBoneInfo()
     6.5  	{
     6.6  		std::for_each(mChildList.begin(), mChildList.end(), DeletePointer());
     6.7 +		mChildList.clear();
     6.8  	}
     6.9  	BOOL parseXml(LLXmlTreeNode* node);
    6.10  	
    6.11 @@ -108,6 +109,7 @@
    6.12  	~LLAvatarSkeletonInfo()
    6.13  	{
    6.14  		std::for_each(mBoneInfoList.begin(), mBoneInfoList.end(), DeletePointer());
    6.15 +		mBoneInfoList.clear();
    6.16  	}
    6.17  	BOOL parseXml(LLXmlTreeNode* node);
    6.18  	S32 getNumBones() const { return mNumBones; }
    6.19 @@ -132,14 +134,26 @@
    6.20  LLAvatarAppearance::LLAvatarXmlInfo::~LLAvatarXmlInfo()
    6.21  {
    6.22  	std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer());
    6.23 +	mMeshInfoList.clear();
    6.24 +
    6.25  	std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());		
    6.26 +	mSkeletalDistortionInfoList.clear();
    6.27 +
    6.28  	std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer());
    6.29 +	mAttachmentInfoList.clear();
    6.30 +
    6.31  	deleteAndClear(mTexSkinColorInfo);
    6.32  	deleteAndClear(mTexHairColorInfo);
    6.33  	deleteAndClear(mTexEyeColorInfo);
    6.34 +
    6.35  	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());		
    6.36 +	mLayerInfoList.clear();
    6.37 +
    6.38  	std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer());
    6.39 +	mDriverInfoList.clear();
    6.40 +
    6.41  	std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer());
    6.42 +	mMorphMaskInfoList.clear();
    6.43  }
    6.44  
    6.45  
     7.1 --- a/indra/llappearance/lltexglobalcolor.cpp	Sat Feb 15 13:10:12 2014 -0800
     7.2 +++ b/indra/llappearance/lltexglobalcolor.cpp	Fri Feb 21 16:45:23 2014 -0800
     7.3 @@ -120,6 +120,7 @@
     7.4  LLTexGlobalColorInfo::~LLTexGlobalColorInfo()
     7.5  {
     7.6  	for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer());
     7.7 +	mParamColorInfoList.clear();
     7.8  }
     7.9  
    7.10  BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node)
     8.1 --- a/indra/llappearance/lltexlayer.cpp	Sat Feb 15 13:10:12 2014 -0800
     8.2 +++ b/indra/llappearance/lltexlayer.cpp	Fri Feb 21 16:45:23 2014 -0800
     8.3 @@ -195,6 +195,7 @@
     8.4  LLTexLayerSetInfo::~LLTexLayerSetInfo( )
     8.5  {
     8.6  	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());
     8.7 +	mLayerInfoList.clear();
     8.8  }
     8.9  
    8.10  BOOL LLTexLayerSetInfo::parseXml(LLXmlTreeNode* node)
    8.11 @@ -282,7 +283,10 @@
    8.12  {
    8.13  	deleteCaches();
    8.14  	std::for_each(mLayerList.begin(), mLayerList.end(), DeletePointer());
    8.15 +	mLayerList.clear();
    8.16 +
    8.17  	std::for_each(mMaskLayerList.begin(), mMaskLayerList.end(), DeletePointer());
    8.18 +	mMaskLayerList.clear();
    8.19  }
    8.20  
    8.21  //-----------------------------------------------------------------------------
    8.22 @@ -652,7 +656,9 @@
    8.23  LLTexLayerInfo::~LLTexLayerInfo( )
    8.24  {
    8.25  	std::for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer());
    8.26 +	mParamColorInfoList.clear();
    8.27  	std::for_each(mParamAlphaInfoList.begin(), mParamAlphaInfoList.end(), DeletePointer());
    8.28 +	mParamAlphaInfoList.clear();
    8.29  }
    8.30  
    8.31  BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node)
     9.1 --- a/indra/llcharacter/llbvhloader.cpp	Sat Feb 15 13:10:12 2014 -0800
     9.2 +++ b/indra/llcharacter/llbvhloader.cpp	Fri Feb 21 16:45:23 2014 -0800
     9.3 @@ -203,6 +203,7 @@
     9.4  LLBVHLoader::~LLBVHLoader()
     9.5  {
     9.6  	std::for_each(mJoints.begin(),mJoints.end(),DeletePointer());
     9.7 +	mJoints.clear();
     9.8  }
     9.9  
    9.10  //------------------------------------------------------------------------
    10.1 --- a/indra/llcharacter/llkeyframemotion.cpp	Sat Feb 15 13:10:12 2014 -0800
    10.2 +++ b/indra/llcharacter/llkeyframemotion.cpp	Fri Feb 21 16:45:23 2014 -0800
    10.3 @@ -90,7 +90,9 @@
    10.4  LLKeyframeMotion::JointMotionList::~JointMotionList()
    10.5  {
    10.6  	for_each(mConstraints.begin(), mConstraints.end(), DeletePointer());
    10.7 +	mConstraints.clear();
    10.8  	for_each(mJointMotionArray.begin(), mJointMotionArray.end(), DeletePointer());
    10.9 +	mJointMotionArray.clear();
   10.10  }
   10.11  
   10.12  U32 LLKeyframeMotion::JointMotionList::dumpDiagInfo()
   10.13 @@ -456,6 +458,7 @@
   10.14  LLKeyframeMotion::~LLKeyframeMotion()
   10.15  {
   10.16  	for_each(mConstraints.begin(), mConstraints.end(), DeletePointer());
   10.17 +	mConstraints.clear();
   10.18  }
   10.19  
   10.20  //-----------------------------------------------------------------------------
    11.1 --- a/indra/llcharacter/llmultigesture.cpp	Sat Feb 15 13:10:12 2014 -0800
    11.2 +++ b/indra/llcharacter/llmultigesture.cpp	Fri Feb 21 16:45:23 2014 -0800
    11.3 @@ -59,6 +59,7 @@
    11.4  LLMultiGesture::~LLMultiGesture()
    11.5  {
    11.6  	std::for_each(mSteps.begin(), mSteps.end(), DeletePointer());
    11.7 +	mSteps.clear();
    11.8  }
    11.9  
   11.10  void LLMultiGesture::reset()
    12.1 --- a/indra/llcharacter/llpose.cpp	Sat Feb 15 13:10:12 2014 -0800
    12.2 +++ b/indra/llcharacter/llpose.cpp	Fri Feb 21 16:45:23 2014 -0800
    12.3 @@ -461,6 +461,7 @@
    12.4  LLPoseBlender::~LLPoseBlender()
    12.5  {
    12.6  	for_each(mJointStateBlenderPool.begin(), mJointStateBlenderPool.end(), DeletePairedPointer());
    12.7 +	mJointStateBlenderPool.clear();
    12.8  }
    12.9  
   12.10  //-----------------------------------------------------------------------------
    13.1 --- a/indra/llcommon/llerror.cpp	Sat Feb 15 13:10:12 2014 -0800
    13.2 +++ b/indra/llcommon/llerror.cpp	Fri Feb 21 16:45:23 2014 -0800
    13.3 @@ -436,8 +436,8 @@
    13.4  		
    13.5  		~Settings()
    13.6  		{
    13.7 -			for_each(recorders.begin(), recorders.end(),
    13.8 -					 DeletePointer());
    13.9 +			for_each(recorders.begin(), recorders.end(), DeletePointer());
   13.10 +			recorders.clear();
   13.11  		}
   13.12  		
   13.13  		static Settings*& getPtr();
    14.1 --- a/indra/llcommon/llfasttimer.cpp	Sat Feb 15 13:10:12 2014 -0800
    14.2 +++ b/indra/llcommon/llfasttimer.cpp	Fri Feb 21 16:45:23 2014 -0800
    14.3 @@ -125,6 +125,7 @@
    14.4  	~NamedTimerFactory()
    14.5  	{
    14.6  		std::for_each(mTimers.begin(), mTimers.end(), DeletePairedPointer());
    14.7 +		mTimers.clear();
    14.8  
    14.9  		delete mTimerRoot;
   14.10  	}
    15.1 --- a/indra/llcommon/llstl.h	Sat Feb 15 13:10:12 2014 -0800
    15.2 +++ b/indra/llcommon/llstl.h	Fri Feb 21 16:45:23 2014 -0800
    15.3 @@ -98,6 +98,7 @@
    15.4  // The general form is:
    15.5  //
    15.6  //  std::for_each(somemap.begin(), somemap.end(), DeletePairedPointer());
    15.7 +//  somemap.clear();		// Don't leave dangling pointers around
    15.8  
    15.9  struct DeletePairedPointer
   15.10  {
    16.1 --- a/indra/llmessage/llbuffer.cpp	Sat Feb 15 13:10:12 2014 -0800
    16.2 +++ b/indra/llmessage/llbuffer.cpp	Fri Feb 21 16:45:23 2014 -0800
    16.3 @@ -225,7 +225,7 @@
    16.4  LLBufferArray::~LLBufferArray()
    16.5  {
    16.6  	std::for_each(mBuffers.begin(), mBuffers.end(), DeletePointer());
    16.7 -
    16.8 +	mBuffers.clear();
    16.9  	delete mMutexp;
   16.10  }
   16.11  
    17.1 --- a/indra/llmessage/llcachename.cpp	Sat Feb 15 13:10:12 2014 -0800
    17.2 +++ b/indra/llmessage/llcachename.cpp	Fri Feb 21 16:45:23 2014 -0800
    17.3 @@ -280,7 +280,9 @@
    17.4  LLCacheName::Impl::~Impl()
    17.5  {
    17.6  	for_each(mCache.begin(), mCache.end(), DeletePairedPointer());
    17.7 +	mCache.clear();
    17.8  	for_each(mReplyQueue.begin(), mReplyQueue.end(), DeletePointer());
    17.9 +	mReplyQueue.clear();
   17.10  }
   17.11  
   17.12  boost::signals2::connection LLCacheName::Impl::addPending(const LLUUID& id, const LLCacheNameCallback& callback)
    18.1 --- a/indra/llmessage/llcurl.cpp	Sat Feb 15 13:10:12 2014 -0800
    18.2 +++ b/indra/llmessage/llcurl.cpp	Fri Feb 21 16:45:23 2014 -0800
    18.3 @@ -1783,6 +1783,7 @@
    18.4  #if SAFE_SSL
    18.5  	CRYPTO_set_locking_callback(NULL);
    18.6  	for_each(sSSLMutex.begin(), sSSLMutex.end(), DeletePointer());
    18.7 +	sSSLMutex.clear();
    18.8  #endif
    18.9  	
   18.10  	LL_CHECK_MEMORY
    19.1 --- a/indra/llmessage/llhttpnode.cpp	Sat Feb 15 13:10:12 2014 -0800
    19.2 +++ b/indra/llmessage/llhttpnode.cpp	Fri Feb 21 16:45:23 2014 -0800
    19.3 @@ -76,8 +76,8 @@
    19.4  // virtual
    19.5  LLHTTPNode::~LLHTTPNode()
    19.6  {
    19.7 -	std::for_each(impl.mNamedChildren.begin(), impl.mNamedChildren.end(),
    19.8 -		DeletePairedPointer());
    19.9 +	std::for_each(impl.mNamedChildren.begin(), impl.mNamedChildren.end(), DeletePairedPointer());
   19.10 +	impl.mNamedChildren.clear();
   19.11  
   19.12  	delete impl.mWildcardChild;
   19.13  	
    20.1 --- a/indra/llmessage/llmessagetemplate.h	Sat Feb 15 13:10:12 2014 -0800
    20.2 +++ b/indra/llmessage/llmessagetemplate.h	Fri Feb 21 16:45:23 2014 -0800
    20.3 @@ -120,6 +120,7 @@
    20.4  	~LLMsgData()
    20.5  	{
    20.6  		for_each(mMemberBlocks.begin(), mMemberBlocks.end(), DeletePairedPointer());
    20.7 +		mMemberBlocks.clear();
    20.8  	}
    20.9  
   20.10  	void addBlock(LLMsgBlkData *blockp)
    21.1 --- a/indra/llrender/llfontfreetype.cpp	Sat Feb 15 13:10:12 2014 -0800
    21.2 +++ b/indra/llrender/llfontfreetype.cpp	Fri Feb 21 16:45:23 2014 -0800
    21.3 @@ -130,6 +130,7 @@
    21.4  
    21.5  	// Delete glyph info
    21.6  	std::for_each(mCharGlyphInfoMap.begin(), mCharGlyphInfoMap.end(), DeletePairedPointer());
    21.7 +	mCharGlyphInfoMap.clear();
    21.8  
    21.9  	// mFontBitmapCachep will be cleaned up by LLPointer destructor.
   21.10  	// mFallbackFonts cleaned up by LLPointer destructor
    22.1 --- a/indra/llui/llfloater.cpp	Sat Feb 15 13:10:12 2014 -0800
    22.2 +++ b/indra/llui/llfloater.cpp	Fri Feb 21 16:45:23 2014 -0800
    22.3 @@ -2941,9 +2941,14 @@
    22.4  		}
    22.5  	}
    22.6  
    22.7 -	const LLRect& left_toolbar_rect = mToolbarRects[LLToolBarEnums::TOOLBAR_LEFT];
    22.8 -	const LLRect& bottom_toolbar_rect = mToolbarRects[LLToolBarEnums::TOOLBAR_BOTTOM];
    22.9 -	const LLRect& right_toolbar_rect = mToolbarRects[LLToolBarEnums::TOOLBAR_RIGHT];
   22.10 +	// <FS:Ansariel> Memory corruption crash at login/logout
   22.11 +	//const LLRect& left_toolbar_rect = mToolbarRects[LLToolBarEnums::TOOLBAR_LEFT];
   22.12 +	//const LLRect& bottom_toolbar_rect = mToolbarRects[LLToolBarEnums::TOOLBAR_BOTTOM];
   22.13 +	//const LLRect& right_toolbar_rect = mToolbarRects[LLToolBarEnums::TOOLBAR_RIGHT];
   22.14 +	const LLRect& left_toolbar_rect = mToolbarLeftRect;
   22.15 +	const LLRect& bottom_toolbar_rect = mToolbarBottomRect;
   22.16 +	const LLRect& right_toolbar_rect = mToolbarRightRect;
   22.17 +	// </FS:Ansariel>
   22.18  	const LLRect& floater_rect = floater->getRect();
   22.19  
   22.20  	S32 delta_left = left_toolbar_rect.notEmpty() ? left_toolbar_rect.mRight - floater_rect.mRight : 0;
   22.21 @@ -3208,7 +3213,23 @@
   22.22  {
   22.23  	if (tb < LLToolBarEnums::TOOLBAR_COUNT)
   22.24  	{
   22.25 -		mToolbarRects[tb] = toolbar_rect;
   22.26 +		// <FS:Ansariel> Memory corruption crash at login/logout
   22.27 +		//mToolbarRects[tb] = toolbar_rect;
   22.28 +		switch (tb)
   22.29 +		{
   22.30 +			case LLToolBarEnums::TOOLBAR_LEFT:
   22.31 +				mToolbarLeftRect = toolbar_rect;
   22.32 +				break;
   22.33 +			case LLToolBarEnums::TOOLBAR_RIGHT:
   22.34 +				mToolbarRightRect = toolbar_rect;
   22.35 +				break;
   22.36 +			case LLToolBarEnums::TOOLBAR_BOTTOM:
   22.37 +				mToolbarBottomRect = toolbar_rect;
   22.38 +				break;
   22.39 +			default:
   22.40 +				break;
   22.41 +		}
   22.42 +		// </FS:Ansariel>
   22.43  	}
   22.44  }
   22.45  
    23.1 --- a/indra/llui/llfloater.h	Sat Feb 15 13:10:12 2014 -0800
    23.2 +++ b/indra/llui/llfloater.h	Fri Feb 21 16:45:23 2014 -0800
    23.3 @@ -595,7 +595,12 @@
    23.4  	void hiddenFloaterClosed(LLFloater* floater);
    23.5  
    23.6  	LLRect				mLastSnapRect;
    23.7 -	LLRect				mToolbarRects[LLToolBarEnums::TOOLBAR_COUNT];
    23.8 +	// <FS:Ansariel> Memory corruption crash at login/logout
    23.9 +	//LLRect				mToolbarRects[LLToolBarEnums::TOOLBAR_COUNT];
   23.10 +	LLRect			mToolbarLeftRect;
   23.11 +	LLRect			mToolbarRightRect;
   23.12 +	LLRect			mToolbarBottomRect;
   23.13 +	// </FS:Ansariel>
   23.14  	LLHandle<LLView>	mSnapView;
   23.15  	BOOL			mFocusCycleMode;
   23.16  	S32				mSnapOffsetBottom;
    24.1 --- a/indra/llui/llkeywords.cpp	Sat Feb 15 13:10:12 2014 -0800
    24.2 +++ b/indra/llui/llkeywords.cpp	Fri Feb 21 16:45:23 2014 -0800
    24.3 @@ -79,8 +79,11 @@
    24.4  LLKeywords::~LLKeywords()
    24.5  {
    24.6  	std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer());
    24.7 +	mWordTokenMap.clear();
    24.8  	std::for_each(mLineTokenList.begin(), mLineTokenList.end(), DeletePointer());
    24.9 +	mLineTokenList.clear();
   24.10  	std::for_each(mDelimiterTokenList.begin(), mDelimiterTokenList.end(), DeletePointer());
   24.11 +	mDelimiterTokenList.clear();
   24.12  }
   24.13  
   24.14  BOOL LLKeywords::loadFromFile( const std::string& filename )
    25.1 --- a/indra/llui/lllayoutstack.cpp	Sat Feb 15 13:10:12 2014 -0800
    25.2 +++ b/indra/llui/lllayoutstack.cpp	Fri Feb 21 16:45:23 2014 -0800
    25.3 @@ -203,9 +203,9 @@
    25.4  	LLPanel::handleReshape(new_rect, by_user);
    25.5  
    25.6  	// <FS:Ansariel> Add callback for reshaping
    25.7 -	if (!mReshapeCallback.empty())
    25.8 +	if (!mReshapePanelCallback.empty())
    25.9  	{
   25.10 -		mReshapeCallback(this, new_rect);
   25.11 +		mReshapePanelCallback(this, new_rect);
   25.12  	}
   25.13  	// </FS:Ansariel>
   25.14  }
    26.1 --- a/indra/llui/lllayoutstack.h	Sat Feb 15 13:10:12 2014 -0800
    26.2 +++ b/indra/llui/lllayoutstack.h	Fri Feb 21 16:45:23 2014 -0800
    26.3 @@ -211,8 +211,8 @@
    26.4  	void setIgnoreReshape(bool ignore) { mIgnoreReshape = ignore; }
    26.5  
    26.6  	// <FS:Ansariel> Add callback for reshaping
    26.7 -	typedef boost::function<void(LLLayoutPanel* panel, const LLRect& rect)> reshape_callback_t;
    26.8 -	void setReshapeCallback(reshape_callback_t cb) { mReshapeCallback = cb; }
    26.9 +	typedef boost::function<void(LLLayoutPanel* panel, const LLRect& rect)> reshape_panel_callback_t;
   26.10 +	void setReshapePanelCallback(reshape_panel_callback_t cb) { mReshapePanelCallback = cb; }
   26.11  	// </FS:Ansariel>
   26.12  
   26.13  protected:
   26.14 @@ -233,7 +233,7 @@
   26.15  	class LLResizeBar* mResizeBar;
   26.16  
   26.17  	// <FS:Ansariel> Add callback for reshaping
   26.18 -	reshape_callback_t mReshapeCallback;
   26.19 +	reshape_panel_callback_t mReshapePanelCallback;
   26.20  };
   26.21  
   26.22  
    27.1 --- a/indra/llui/llnotifications.cpp	Sat Feb 15 13:10:12 2014 -0800
    27.2 +++ b/indra/llui/llnotifications.cpp	Fri Feb 21 16:45:23 2014 -0800
    27.3 @@ -1214,7 +1214,8 @@
    27.4  :	LLNotificationChannelBase(LLNotificationFilters::includeEverything),
    27.5  	mIgnoreAllNotifications(false)
    27.6  {
    27.7 -        mListener.reset(new LLNotificationsListener(*this));
    27.8 +	// <FS:Ansariel> Disable test API
    27.9 +        //mListener.reset(new LLNotificationsListener(*this));
   27.10  	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Notification.Show", boost::bind(&LLNotifications::addFromCallback, this, _2));
   27.11  }
   27.12  
    28.1 --- a/indra/llui/llnotifications.h	Sat Feb 15 13:10:12 2014 -0800
    28.2 +++ b/indra/llui/llnotifications.h	Fri Feb 21 16:45:23 2014 -0800
    28.3 @@ -98,7 +98,8 @@
    28.4  #include "llrefcount.h"
    28.5  #include "llsdparam.h"
    28.6  
    28.7 -#include "llnotificationslistener.h"
    28.8 +// <FS:Ansariel> Disable test API
    28.9 +//#include "llnotificationslistener.h"
   28.10  
   28.11  class LLAvatarName;
   28.12  typedef enum e_notification_priority
   28.13 @@ -985,7 +986,8 @@
   28.14  
   28.15  	bool mIgnoreAllNotifications;
   28.16  
   28.17 -	boost::scoped_ptr<LLNotificationsListener> mListener;
   28.18 +	// <FS:Ansariel> Disable test API
   28.19 +	//boost::scoped_ptr<LLNotificationsListener> mListener;
   28.20  
   28.21  	std::vector<LLNotificationChannelPtr> mDefaultChannels;
   28.22  };
    29.1 --- a/indra/llui/llscrolllistctrl.cpp	Sat Feb 15 13:10:12 2014 -0800
    29.2 +++ b/indra/llui/llscrolllistctrl.cpp	Fri Feb 21 16:45:23 2014 -0800
    29.3 @@ -328,7 +328,9 @@
    29.4  	delete mSortCallback;
    29.5  
    29.6  	std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
    29.7 +	mItemList.clear();
    29.8  	std::for_each(mColumns.begin(), mColumns.end(), DeletePairedPointer());
    29.9 +	mColumns.clear();
   29.10  }
   29.11  
   29.12  
    30.1 --- a/indra/llui/llscrolllistitem.cpp	Sat Feb 15 13:10:12 2014 -0800
    30.2 +++ b/indra/llui/llscrolllistitem.cpp	Fri Feb 21 16:45:23 2014 -0800
    30.3 @@ -50,6 +50,7 @@
    30.4  LLScrollListItem::~LLScrollListItem()
    30.5  {
    30.6  	std::for_each(mColumns.begin(), mColumns.end(), DeletePointer());
    30.7 +	mColumns.clear();
    30.8  }
    30.9  
   30.10  void LLScrollListItem::addColumn(const LLScrollListCell::Params& p)
    31.1 --- a/indra/llui/lltabcontainer.cpp	Sat Feb 15 13:10:12 2014 -0800
    31.2 +++ b/indra/llui/lltabcontainer.cpp	Fri Feb 21 16:45:23 2014 -0800
    31.3 @@ -307,6 +307,7 @@
    31.4  LLTabContainer::~LLTabContainer()
    31.5  {
    31.6  	std::for_each(mTabList.begin(), mTabList.end(), DeletePointer());
    31.7 +	mTabList.clear();
    31.8  }
    31.9  
   31.10  //virtual
    32.1 --- a/indra/llui/lltexteditor.cpp	Sat Feb 15 13:10:12 2014 -0800
    32.2 +++ b/indra/llui/lltexteditor.cpp	Fri Feb 21 16:45:23 2014 -0800
    32.3 @@ -310,7 +310,7 @@
    32.4  
    32.5  	// Scrollbar is deleted by LLView
    32.6  	std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer());
    32.7 -
    32.8 +	mUndoStack.clear();
    32.9  	// context menu is owned by menu holder, not us
   32.10  	//delete mContextMenu;
   32.11  }
    33.1 --- a/indra/llui/llview.cpp	Sat Feb 15 13:10:12 2014 -0800
    33.2 +++ b/indra/llui/llview.cpp	Fri Feb 21 16:45:23 2014 -0800
    33.3 @@ -384,10 +384,6 @@
    33.4  	if (child->mParentView == this) 
    33.5  	{
    33.6  		// if we are removing an item we are currently iterating over, that would be bad
    33.7 -		if (child->mInDraw)
    33.8 -		{
    33.9 -			llinfos << "LOGINCRASH: Removing child while in draw. child name = \"" << child->mName << "\"" << llendl;
   33.10 -		}
   33.11  		llassert(child->mInDraw == false);
   33.12  		mChildList.remove( child );
   33.13  		child->mParentView = NULL;
    34.1 --- a/indra/llvfs/llvfs.cpp	Sat Feb 15 13:10:12 2014 -0800
    34.2 +++ b/indra/llvfs/llvfs.cpp	Fri Feb 21 16:45:23 2014 -0800
    34.3 @@ -578,6 +578,7 @@
    34.4  	mFreeBlocksByLength.clear();
    34.5  
    34.6  	for_each(mFreeBlocksByLocation.begin(), mFreeBlocksByLocation.end(), DeletePairedPointer());
    34.7 +	mFreeBlocksByLocation.clear();
    34.8      
    34.9  	unlockAndClose(mDataFP);
   34.10  	mDataFP = NULL;
   34.11 @@ -1835,6 +1836,7 @@
   34.12  	}
   34.13  
   34.14  	for_each(audit_blocks.begin(), audit_blocks.end(), DeletePointer());
   34.15 +	audit_blocks.clear();
   34.16  }
   34.17      
   34.18      
    35.1 --- a/indra/llwindow/lldxhardware.cpp	Sat Feb 15 13:10:12 2014 -0800
    35.2 +++ b/indra/llwindow/lldxhardware.cpp	Fri Feb 21 16:45:23 2014 -0800
    35.3 @@ -171,6 +171,7 @@
    35.4  LLDXDevice::~LLDXDevice()
    35.5  {
    35.6  	for_each(mDriverFiles.begin(), mDriverFiles.end(), DeletePairedPointer());
    35.7 +	mDriverFiles.clear();
    35.8  }
    35.9  
   35.10  std::string LLDXDevice::dump()
   35.11 @@ -230,6 +231,7 @@
   35.12  void LLDXHardware::cleanup()
   35.13  {
   35.14    // for_each(mDevices.begin(), mDevices.end(), DeletePairedPointer());
   35.15 +  // mDevices.clear();
   35.16  }
   35.17  
   35.18  /*
    36.1 --- a/indra/newview/VIEWER_VERSION.txt	Sat Feb 15 13:10:12 2014 -0800
    36.2 +++ b/indra/newview/VIEWER_VERSION.txt	Fri Feb 21 16:45:23 2014 -0800
    36.3 @@ -1,1 +1,1 @@
    36.4 -4.5.2
    36.5 +4.6.0
    37.1 --- a/indra/newview/app_settings/settings.xml	Sat Feb 15 13:10:12 2014 -0800
    37.2 +++ b/indra/newview/app_settings/settings.xml	Fri Feb 21 16:45:23 2014 -0800
    37.3 @@ -17032,7 +17032,7 @@
    37.4        <key>Type</key>
    37.5        <string>F32</string>
    37.6        <key>Value</key>
    37.7 -      <real>-1.0</real>
    37.8 +      <real>60.0</real>
    37.9      </map>
   37.10      <key>ForcePeriodicRenderingTime</key>
   37.11      <map>
   37.12 @@ -21960,6 +21960,28 @@
   37.13        <key>Value</key>
   37.14        <integer>0</integer>
   37.15      </map>
   37.16 +    <key>FSUseNewRegionRestartNotification</key>
   37.17 +      <map>
   37.18 +      <key>Comment</key>
   37.19 +      <string>Use the new region restart notification instead of the old one with toasts</string>
   37.20 +      <key>Persist</key>
   37.21 +      <integer>1</integer>
   37.22 +      <key>Type</key>
   37.23 +      <string>Boolean</string>
   37.24 +      <key>Value</key>
   37.25 +      <integer>1</integer>
   37.26 +    </map>
   37.27 +    <key>FSLimitFramerate</key>
   37.28 +      <map>
   37.29 +      <key>Comment</key>
   37.30 +      <string>Enable framerate limitation defined by MaxFPS</string>
   37.31 +      <key>Persist</key>
   37.32 +      <integer>1</integer>
   37.33 +      <key>Type</key>
   37.34 +      <string>Boolean</string>
   37.35 +      <key>Value</key>
   37.36 +      <integer>0</integer>
   37.37 +    </map>
   37.38  </map>
   37.39  </llsd>
   37.40  
    38.1 --- a/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt	Sat Feb 15 13:10:12 2014 -0800
    38.2 +++ b/indra/newview/fs_resources/EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt	Fri Feb 21 16:45:23 2014 -0800
    38.3 @@ -1,4 +1,4 @@
    38.4 -//http bridge script v.2.6
    38.5 +//http bridge script v.2.7
    38.6  //Firestorm
    38.7  //Tozh Taurog, Arrehn Oberlander, Tonya Souther
    38.8  
    38.9 @@ -19,7 +19,7 @@
   38.10      integer UNKNOWN_VIEWER = 1;
   38.11      integer META_CONTROL = 1024;      // Control value to do nothing; for no-script sims
   38.12      string  bridgeAuth = "BRIDGEKEY"; // Filled in dynamically
   38.13 -    string  bridgeVersion = "2.6";    // This should match fslslbridge.cpp
   38.14 +    string  bridgeVersion = "2.7";    // This should match fslslbridge.cpp
   38.15      string  bridgeURL;
   38.16      string  latestURL;
   38.17      integer debug = FALSE;
   38.18 @@ -218,6 +218,11 @@
   38.19  
   38.20          else if (cmd == "llMoveToTarget")
   38.21          {
   38.22 +            if(llSubStringIndex(llGetSimulatorHostname(),"lindenlab.com")!=-1)
   38.23 +            {
   38.24 +                // llMoveToTarget teleports are disabled for Second Life grids
   38.25 +                return;
   38.26 +            }
   38.27  
   38.28              // Pause movelock for now, if present
   38.29              if (useMoveLock)
    39.1 --- a/indra/newview/fsareasearch.cpp	Sat Feb 15 13:10:12 2014 -0800
    39.2 +++ b/indra/newview/fsareasearch.cpp	Fri Feb 21 16:45:23 2014 -0800
    39.3 @@ -805,7 +805,7 @@
    39.4  		return;
    39.5  	}
    39.6  	
    39.7 -	if (mFilterLocked && !objectp->flagObjectPermanent())
    39.8 +	if (mFilterLocked && (details.owner_mask & PERM_MOVE))
    39.9  	{
   39.10  		return;
   39.11  	}
    40.1 --- a/indra/newview/fslslbridge.cpp	Sat Feb 15 13:10:12 2014 -0800
    40.2 +++ b/indra/newview/fslslbridge.cpp	Fri Feb 21 16:45:23 2014 -0800
    40.3 @@ -64,10 +64,10 @@
    40.4  #define FS_BRIDGE_FOLDER "#LSL Bridge"
    40.5  #define FS_BRIDGE_CONTAINER_FOLDER "Landscaping"
    40.6  #define FS_BRIDGE_MAJOR_VERSION 2
    40.7 -#define FS_BRIDGE_MINOR_VERSION 6
    40.8 +#define FS_BRIDGE_MINOR_VERSION 7
    40.9  #define FS_MAX_MINOR_VERSION 99
   40.10  
   40.11 -//current script version is 2.6
   40.12 +//current script version is 2.7
   40.13  const std::string UPLOAD_SCRIPT_CURRENT = "EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt";
   40.14  
   40.15  //
    41.1 --- a/indra/newview/fspanelcontactsets.cpp	Sat Feb 15 13:10:12 2014 -0800
    41.2 +++ b/indra/newview/fspanelcontactsets.cpp	Fri Feb 21 16:45:23 2014 -0800
    41.3 @@ -140,6 +140,10 @@
    41.4  	{
    41.5  		avatars = LGGContactSets::getInstance()->getListOfPseudonymAvs();
    41.6  	}
    41.7 +	else if (contact_set == CS_SET_EXTRA_AVS)
    41.8 +	{
    41.9 +		avatars = LGGContactSets::getInstance()->getListOfNonFriends();
   41.10 +	}
   41.11  	else if (!LGGContactSets::getInstance()->isInternalSetName(contact_set))
   41.12  	{
   41.13  		LGGContactSets::ContactSet* group = LGGContactSets::getInstance()->getContactSet(contact_set);	// UGLY!
   41.14 @@ -202,6 +206,7 @@
   41.15  	mContactSetCombo->add(getString("all_sets"), LLSD(CS_SET_ALL_SETS), ADD_BOTTOM);
   41.16  	mContactSetCombo->add(getString("no_sets"), LLSD(CS_SET_NO_SETS), ADD_BOTTOM);
   41.17  	mContactSetCombo->add(getString("pseudonyms"), LLSD(CS_SET_PSEUDONYM), ADD_BOTTOM);
   41.18 +	mContactSetCombo->add(getString("non_friends"), LLSD(CS_SET_EXTRA_AVS), ADD_BOTTOM);
   41.19  	resetControls();
   41.20  }
   41.21  
    42.1 --- a/indra/newview/lggcontactsets.cpp	Sat Feb 15 13:10:12 2014 -0800
    42.2 +++ b/indra/newview/lggcontactsets.cpp	Fri Feb 21 16:45:23 2014 -0800
    42.3 @@ -772,6 +772,11 @@
    42.4  		mPseudonyms.erase(found);
    42.5  		LLAvatarNameCache::fetch(friend_id); // update
    42.6  		LLVOAvatar::invalidateNameTag(friend_id);
    42.7 +		if (!LLAvatarTracker::instance().isBuddy(friend_id) && LGGContactSets::getInstance()->getFriendSets(friend_id).size() == 0)
    42.8 +		{
    42.9 +			LGGContactSets::getInstance()->removeNonFriendFromList(friend_id);
   42.10 +		}
   42.11 +
   42.12  		mChangedSignal(UPDATED_MEMBERS);
   42.13  		saveToDisk();
   42.14  	}
   42.15 @@ -869,6 +874,17 @@
   42.16  	contact_set_map_t::iterator found = mContactSets.find(set_name);
   42.17  	if (found != mContactSets.end())
   42.18  	{
   42.19 +		ContactSet* cset = found->second;
   42.20 +		for (uuid_set_t::iterator member_it = cset->mFriends.begin(); member_it != cset->mFriends.end(); ++member_it)
   42.21 +		{
   42.22 +			if (!LLAvatarTracker::instance().isBuddy(*member_it) &&
   42.23 +				LGGContactSets::getInstance()->getFriendSets(*member_it).size() == 1 && // Current set is only set!
   42.24 +				!LGGContactSets::getInstance()->hasPseudonym(*member_it))
   42.25 +			{
   42.26 +				LGGContactSets::getInstance()->removeNonFriendFromList(*member_it);
   42.27 +			}
   42.28 +		}
   42.29 +
   42.30  		delete found->second;
   42.31  		mContactSets.erase(found);
   42.32  		saveToDisk();
   42.33 @@ -970,8 +986,12 @@
   42.34  			LLUUID id = it->asUUID();
   42.35  			std::string set = notification["payload"]["contact_set"].asString();
   42.36  			LGGContactSets::getInstance()->removeFriendFromSet(id, set);
   42.37 -			if (!LLAvatarTracker::instance().isBuddy(id) && LGGContactSets::getInstance()->getFriendSets(id).size() > 1)
   42.38 +			if (!LLAvatarTracker::instance().isBuddy(id) &&
   42.39 +				LGGContactSets::getInstance()->getFriendSets(id).size() == 0 &&
   42.40 +				!LGGContactSets::getInstance()->hasPseudonym(id))
   42.41 +			{
   42.42  				LGGContactSets::getInstance()->removeNonFriendFromList(id);
   42.43 +			}
   42.44  		}
   42.45  	}
   42.46  	return false;
    43.1 --- a/indra/newview/llappviewer.cpp	Sat Feb 15 13:10:12 2014 -0800
    43.2 +++ b/indra/newview/llappviewer.cpp	Fri Feb 21 16:45:23 2014 -0800
    43.3 @@ -1813,7 +1813,11 @@
    43.4  				static LLCachedControl<F32> max_fps(gSavedSettings, "MaxFPS");
    43.5  				// Only limit FPS when we are actually rendering something.  Otherwise
    43.6  				// logins, logouts and teleports take much longer to complete.
    43.7 -				if (max_fps > F_APPROXIMATELY_ZERO && 
    43.8 +				// <FS:Ansariel> FIRE-11804: Expose MaxFPS
    43.9 +				//if (max_fps > F_APPROXIMATELY_ZERO && 
   43.10 +				static LLCachedControl<bool> fsLimitFramerate(gSavedSettings, "FSLimitFramerate");
   43.11 +				if (fsLimitFramerate && max_fps > F_APPROXIMATELY_ZERO && 
   43.12 +				// </FS:Ansariel>
   43.13  					LLStartUp::getStartupState() == STATE_STARTED &&
   43.14  					!gTeleportDisplay &&
   43.15  					!logoutRequestSent())
    44.1 --- a/indra/newview/llcallingcard.cpp	Sat Feb 15 13:10:12 2014 -0800
    44.2 +++ b/indra/newview/llcallingcard.cpp	Fri Feb 21 16:45:23 2014 -0800
    44.3 @@ -124,7 +124,9 @@
    44.4  {
    44.5  	deleteTrackingData();
    44.6  	std::for_each(mObservers.begin(), mObservers.end(), DeletePointer());
    44.7 +	mObservers.clear();
    44.8  	std::for_each(mBuddyInfo.begin(), mBuddyInfo.end(), DeletePairedPointer());
    44.9 +	mBuddyInfo.clear();
   44.10  }
   44.11  
   44.12  void LLAvatarTracker::track(const LLUUID& avatar_id, const std::string& name)
    45.1 --- a/indra/newview/llchannelmanager.cpp	Sat Feb 15 13:10:12 2014 -0800
    45.2 +++ b/indra/newview/llchannelmanager.cpp	Fri Feb 21 16:45:23 2014 -0800
    45.3 @@ -131,8 +131,6 @@
    45.4  	}
    45.5  	else
    45.6  	{
    45.7 -		llinfos << "LOGINCRASH: Away notifications init" << llendl;
    45.8 -
    45.9  		// create a channel for the StartUp Toast
   45.10  		LLScreenChannelBase::Params p;
   45.11  		p.id = LLUUID(gSavedSettings.getString("StartUpChannelUUID"));
   45.12 @@ -141,28 +139,21 @@
   45.13  
   45.14  		if(!mStartUpChannel)
   45.15  		{
   45.16 -			llinfos << "LOGINCRASH: No startup channel" << llendl;
   45.17  			onStartUpToastClose();
   45.18  		}
   45.19  		else
   45.20  		{
   45.21 -			llinfos << "LOGINCRASH: Add startup channel" << llendl;
   45.22  			gViewerWindow->getRootView()->addChild(mStartUpChannel);
   45.23  
   45.24  			// init channel's position and size
   45.25 -			llinfos << "LOGINCRASH: Calculate channel rect" << llendl;
   45.26  			S32 channel_right_bound = gViewerWindow->getWorldViewRectScaled().mRight - gSavedSettings.getS32("NotificationChannelRightMargin"); 
   45.27  			S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth");
   45.28 -			llinfos << "LOGINCRASH: Startup channel init" << llendl;
   45.29  			mStartUpChannel->init(channel_right_bound - channel_width, channel_right_bound);
   45.30 -			llinfos << "LOGINCRASH: Startup channel set mouse down callback" << llendl;
   45.31  			mStartUpChannel->setMouseDownCallback(boost::bind(&LLNotificationWellWindow::onStartUpToastClick, LLNotificationWellWindow::getInstance(), _2, _3, _4));
   45.32  
   45.33  			mStartUpChannel->setCommitCallback(boost::bind(&LLChannelManager::onStartUpToastClose, this));
   45.34 -			llinfos << "LOGINCRASH: Startup channel create toast" << llendl;
   45.35  			mStartUpChannel->createStartUpToast(away_notifications, gSavedSettings.getS32("StartUpToastLifeTime"));
   45.36  		}
   45.37 -		llinfos << "LOGINCRASH: Away notifications done" << llendl;
   45.38  	}
   45.39  
   45.40  	LLPersistentNotificationStorage::getInstance()->loadNotifications();
    46.1 --- a/indra/newview/llfloaterpay.cpp	Sat Feb 15 13:10:12 2014 -0800
    46.2 +++ b/indra/newview/llfloaterpay.cpp	Fri Feb 21 16:45:23 2014 -0800
    46.3 @@ -135,6 +135,7 @@
    46.4  LLFloaterPay::~LLFloaterPay()
    46.5  {
    46.6  	std::for_each(mCallbackData.begin(), mCallbackData.end(), DeletePointer());
    46.7 +	mCallbackData.clear();
    46.8  	// Name callbacks will be automatically disconnected since LLFloater is trackable
    46.9  	
   46.10  	// In case this floater is currently waiting for a reply.
    47.1 --- a/indra/newview/llfloaterpreference.cpp	Sat Feb 15 13:10:12 2014 -0800
    47.2 +++ b/indra/newview/llfloaterpreference.cpp	Fri Feb 21 16:45:23 2014 -0800
    47.3 @@ -2017,8 +2017,18 @@
    47.4  //[FIX FIRE-2765 : SJ] Making sure Reset button resets the chatlogdirectory to the default setting
    47.5  void LLFloaterPreference::onClickResetLogPath()
    47.6  {
    47.7 -	gDirUtilp->setChatLogsDir(gDirUtilp->getOSUserAppDir());
    47.8 -	gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getChatLogsDir());
    47.9 +	// <FS:Ansariel> FIRE-12955: Logs don't get moved when clicking reset log path button
   47.10 +	//gDirUtilp->setChatLogsDir(gDirUtilp->getOSUserAppDir());
   47.11 +	//gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getChatLogsDir());
   47.12 +
   47.13 +	mPriorInstantMessageLogPath = gDirUtilp->getChatLogsDir();
   47.14 +	gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getOSUserAppDir());
   47.15 +
   47.16 +	// enable/disable 'Delete transcripts button
   47.17 +	updateDeleteTranscriptsButton();
   47.18 +
   47.19 +	getChildView("reset_logpath")->setEnabled(FALSE);
   47.20 +	// </FS:Ansariel>
   47.21  }
   47.22  
   47.23  bool LLFloaterPreference::moveTranscriptsAndLog()
   47.24 @@ -2817,8 +2827,31 @@
   47.25  		}
   47.26  	}
   47.27  
   47.28 +	// <FS:Ansariel> DebugLookAt checkbox status not working properly
   47.29 +	/*virtual*/ BOOL postBuild()
   47.30 +	{
   47.31 +		getChild<LLUICtrl>("DebugLookAt")->setCommitCallback(boost::bind(&LLPanelPreferencePrivacy::onClickDebugLookAt, this, _2));
   47.32 +		gSavedPerAccountSettings.getControl("DebugLookAt")->getSignal()->connect(boost::bind(&LLPanelPreferencePrivacy::onChangeDebugLookAt, this));
   47.33 +		onChangeDebugLookAt();
   47.34 +
   47.35 +		return TRUE;
   47.36 +	}
   47.37 +	// </FS:Ansariel>
   47.38 +
   47.39  private:
   47.40  	std::list<std::string> mAccountIndependentSettings;
   47.41 +
   47.42 +	// <FS:Ansariel> DebugLookAt checkbox status not working properly
   47.43 +	void onChangeDebugLookAt()
   47.44 +	{
   47.45 +		getChild<LLCheckBoxCtrl>("DebugLookAt")->set(gSavedPerAccountSettings.getS32("DebugLookAt") == 0 ? FALSE : TRUE);
   47.46 +	}
   47.47 +
   47.48 +	void onClickDebugLookAt(const LLSD& value)
   47.49 +	{
   47.50 +		gSavedPerAccountSettings.setS32("DebugLookAt", value.asBoolean());
   47.51 +	}
   47.52 +	// </FS:Ansariel>
   47.53  };
   47.54  
   47.55  static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics");
    48.1 --- a/indra/newview/llfloaterwebcontent.cpp	Sat Feb 15 13:10:12 2014 -0800
    48.2 +++ b/indra/newview/llfloaterwebcontent.cpp	Fri Feb 21 16:45:23 2014 -0800
    48.3 @@ -389,7 +389,10 @@
    48.4  	}
    48.5  	else if(event == MEDIA_EVENT_GEOMETRY_CHANGE)
    48.6  	{
    48.7 -		geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight());
    48.8 +		if (mCurrentURL.find("facebook.com/dialog/oauth") == std::string::npos) // HACK to fix ACME-1317 - Cho
    48.9 +		{
   48.10 +			geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight());
   48.11 +		}
   48.12  	}
   48.13  	else if(event == MEDIA_EVENT_STATUS_TEXT_CHANGED )
   48.14  	{
    49.1 --- a/indra/newview/llgroupmgr.cpp	Sat Feb 15 13:10:12 2014 -0800
    49.2 +++ b/indra/newview/llgroupmgr.cpp	Fri Feb 21 16:45:23 2014 -0800
    49.3 @@ -81,6 +81,7 @@
    49.4  {
    49.5  	delete mActionSetData;
    49.6  	std::for_each(mActions.begin(), mActions.end(), DeletePointer());
    49.7 +	mActions.clear();
    49.8  }
    49.9  
   49.10  //
    50.1 --- a/indra/newview/lllandmarklist.cpp	Sat Feb 15 13:10:12 2014 -0800
    50.2 +++ b/indra/newview/lllandmarklist.cpp	Fri Feb 21 16:45:23 2014 -0800
    50.3 @@ -46,6 +46,7 @@
    50.4  LLLandmarkList::~LLLandmarkList()
    50.5  {
    50.6  	std::for_each(mList.begin(), mList.end(), DeletePairedPointer());
    50.7 +	mList.clear();
    50.8  }
    50.9  
   50.10  LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t cb)
    51.1 --- a/indra/newview/llpanelface.cpp	Sat Feb 15 13:10:12 2014 -0800
    51.2 +++ b/indra/newview/llpanelface.cpp	Fri Feb 21 16:45:23 2014 -0800
    51.3 @@ -1136,7 +1136,10 @@
    51.4  			mCtrlBumpyScaleU->setTentative(LLSD(norm_scale_tentative));
    51.5  			
    51.6  			// <FS:CR> FIRE-11407 - Materials alignment
    51.7 -			getChildView("checkbox maps sync")->setEnabled(editable && (specmap_id.notNull() || normmap_id.notNull()));
    51.8 +			// <FS:TS> FIRE-11911 - Synchronize materials doens't work with planar textures
    51.9 +			//   Disable the checkbox if planar textures are in use
   51.10 +			getChildView("checkbox maps sync")->setEnabled(editable && (specmap_id.notNull() || normmap_id.notNull()) && !align_planar);
   51.11 +			// </FS:TS> FIRE-11911
   51.12  			// </FS:CR>
   51.13  		}
   51.14  
   51.15 @@ -2637,6 +2640,14 @@
   51.16  //static
   51.17  void LLPanelFace::alignMaterialsProperties(LLPanelFace* self)
   51.18  {
   51.19 +	// <FS:TS> FIRE-11911: Synchronize materials doesn't work with planar textures
   51.20 +	//  Don't even try to do the alignment if we wind up here and planar is enabled.
   51.21 +	if ((bool)self->childGetValue("checkbox planar align").asBoolean())
   51.22 +	{
   51.23 +		return;
   51.24 +	}
   51.25 +	// </FS:TS> FIRE-11911
   51.26 +
   51.27  	//LLPanelFace *self = (LLPanelFace*) userdata;
   51.28  	llassert_always(self);
   51.29  	
    52.1 --- a/indra/newview/lltoastnotifypanel.cpp	Sat Feb 15 13:10:12 2014 -0800
    52.2 +++ b/indra/newview/lltoastnotifypanel.cpp	Fri Feb 21 16:45:23 2014 -0800
    52.3 @@ -133,6 +133,7 @@
    52.4  	mButtonClickConnection.disconnect();
    52.5  
    52.6  	std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer());
    52.7 +	mBtnCallbackData.clear();
    52.8  	if (mIsTip)
    52.9  		{
   52.10  			LLNotifications::getInstance()->cancel(mNotification);
    53.1 --- a/indra/newview/lltoolface.cpp	Sat Feb 15 13:10:12 2014 -0800
    53.2 +++ b/indra/newview/lltoolface.cpp	Fri Feb 21 16:45:23 2014 -0800
    53.3 @@ -119,24 +119,6 @@
    53.4  		}
    53.5  // [/RLVa:KB]
    53.6  
    53.7 -// [RLVa:KB] - Checked: 2010-11-29 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c
    53.8 -		if ( (rlv_handler_t::isEnabled()) &&
    53.9 -			 ( (!gRlvHandler.canEdit(hit_obj)) || 
   53.10 -			   ((gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && (!gRlvHandler.canTouch(hit_obj, pick_info.mObjectOffset))) ) )
   53.11 -		{
   53.12 -			return;
   53.13 -		}
   53.14 -// [/RLVa:KB]
   53.15 -
   53.16 -// [RLVa:KB] - Checked: 2010-11-29 (RLVa-1.3.0c) | Modified: RLVa-1.3.0c
   53.17 -		if ( (rlv_handler_t::isEnabled()) &&
   53.18 -			 ( (!gRlvHandler.canEdit(hit_obj)) || 
   53.19 -			   ((gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && (!gRlvHandler.canTouch(hit_obj, pick_info.mObjectOffset))) ) )
   53.20 -		{
   53.21 -			return;
   53.22 -		}
   53.23 -// [/RLVa:KB]
   53.24 -
   53.25  		// ...clicked on a world object, try to pick the appropriate face
   53.26  
   53.27  		if (pick_info.mKeyMask & MASK_SHIFT)
    54.1 --- a/indra/newview/llviewermessage.cpp	Sat Feb 15 13:10:12 2014 -0800
    54.2 +++ b/indra/newview/llviewermessage.cpp	Fri Feb 21 16:45:23 2014 -0800
    54.3 @@ -3553,7 +3553,11 @@
    54.4  		}
    54.5  		else
    54.6  		{
    54.7 -			gIMMgr->addMessage(session_id, from_id, name, message);
    54.8 +			// <FS:Ansariel> FIRE-12908: Add busy response indicator back to busy messages
    54.9 +			//gIMMgr->addMessage(session_id, from_id, name, message);
   54.10 +			buffer = llformat("(%s): %s", LLTrans::getString("BusyResponse").c_str(), message.c_str());
   54.11 +			gIMMgr->addMessage(session_id, from_id, name, buffer);
   54.12 +			// </FS:Ansariel>
   54.13  		}
   54.14  		break;
   54.15  		
   54.16 @@ -7287,6 +7291,14 @@
   54.17  				seconds = static_cast<S32>(llsdBlock["SECONDS"].asInteger());
   54.18  			}
   54.19  
   54.20 +			// <FS:Ansariel> Optional new region restart notification
   54.21 +			if (!gSavedSettings.getBOOL("FSUseNewRegionRestartNotification"))
   54.22 +			{
   54.23 +				notificationID += "Toast";
   54.24 +			}
   54.25 +			else
   54.26 +			{
   54.27 +			// </FS:Ansariel>
   54.28  			LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance<LLFloaterRegionRestarting>("region_restarting");
   54.29  
   54.30  			if (floaterp)
   54.31 @@ -7304,6 +7316,9 @@
   54.32  					restarting_floater->center();
   54.33  				}
   54.34  			}
   54.35 +			// <FS:Ansariel> Optional new region restart notification
   54.36 +			}
   54.37 +			// </FS:Ansariel>
   54.38  
   54.39  			// <FS:Ansariel> Only play when we want
   54.40  			//send_sound_trigger(LLUUID(gSavedSettings.getString("UISndRestart")), 1.0f);
   54.41 @@ -7465,38 +7480,55 @@
   54.42  			LLStringUtil::convertToS32(text.substr(18), mins);
   54.43  			seconds = mins * 60;
   54.44  			is_region_restart = true;
   54.45 +
   54.46 +			if (!gSavedSettings.getBOOL("FSUseNewRegionRestartNotification"))
   54.47 +			{
   54.48 +				LLSD args;
   54.49 +				args["MINUTES"] = llformat("%d", mins);
   54.50 +				LLNotificationsUtil::add("RegionRestartMinutesToast", args);
   54.51 +			}
   54.52  		}
   54.53  		else if (text.substr(0,17) == "RESTART_X_SECONDS")
   54.54  		{
   54.55  			LLStringUtil::convertToS32(text.substr(18), seconds);
   54.56  			is_region_restart = true;
   54.57 +
   54.58 +			if (!gSavedSettings.getBOOL("FSUseNewRegionRestartNotification"))
   54.59 +			{
   54.60 +				LLSD args;
   54.61 +				args["SECONDS"] = llformat("%d", seconds);
   54.62 +				LLNotificationsUtil::add("RegionRestartSecondsToast", args);
   54.63 +			}
   54.64  		}
   54.65  		if (is_region_restart)
   54.66  		{
   54.67 -			LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance<LLFloaterRegionRestarting>("region_restarting");
   54.68 -
   54.69 -			if (floaterp)
   54.70 -			{
   54.71 -				LLFloaterRegionRestarting::updateTime(seconds);
   54.72 -			}
   54.73 -			else
   54.74 -			{
   54.75 -				std::string region_name;
   54.76 -				if (gAgent.getRegion())
   54.77 +			if (gSavedSettings.getBOOL("FSUseNewRegionRestartNotification"))
   54.78 +			{
   54.79 +				LLFloaterRegionRestarting* floaterp = LLFloaterReg::findTypedInstance<LLFloaterRegionRestarting>("region_restarting");
   54.80 +
   54.81 +				if (floaterp)
   54.82  				{
   54.83 -					region_name = gAgent.getRegion()->getName();
   54.84 +					LLFloaterRegionRestarting::updateTime(seconds);
   54.85  				}
   54.86  				else
   54.87  				{
   54.88 -					region_name = LLTrans::getString("Unknown");
   54.89 -				}
   54.90 -				LLSD params;
   54.91 -				params["NAME"] = region_name;
   54.92 -				params["SECONDS"] = (LLSD::Integer)seconds;
   54.93 -				LLFloaterRegionRestarting* restarting_floater = dynamic_cast<LLFloaterRegionRestarting*>(LLFloaterReg::showInstance("region_restarting", params));
   54.94 -				if(restarting_floater)
   54.95 -				{
   54.96 -					restarting_floater->center();
   54.97 +					std::string region_name;
   54.98 +					if (gAgent.getRegion())
   54.99 +					{
  54.100 +						region_name = gAgent.getRegion()->getName();
  54.101 +					}
  54.102 +					else
  54.103 +					{
  54.104 +						region_name = LLTrans::getString("Unknown");
  54.105 +					}
  54.106 +					LLSD params;
  54.107 +					params["NAME"] = region_name;
  54.108 +					params["SECONDS"] = (LLSD::Integer)seconds;
  54.109 +					LLFloaterRegionRestarting* restarting_floater = dynamic_cast<LLFloaterRegionRestarting*>(LLFloaterReg::showInstance("region_restarting", params));
  54.110 +					if(restarting_floater)
  54.111 +					{
  54.112 +						restarting_floater->center();
  54.113 +					}
  54.114  				}
  54.115  			}
  54.116  
    55.1 --- a/indra/newview/llviewertexture.cpp	Sat Feb 15 13:10:12 2014 -0800
    55.2 +++ b/indra/newview/llviewertexture.cpp	Fri Feb 21 16:45:23 2014 -0800
    55.3 @@ -564,7 +564,7 @@
    55.4  	else if(sEvaluationTimer.getElapsedTimeF32() > discard_delta_time && isMemoryForTextureLow())
    55.5  	{
    55.6  		sDesiredDiscardBias += discard_bias_delta;
    55.7 -		llinfos << "new bias " << sDesiredDiscardBias
    55.8 +		lldebugs << "new bias " << sDesiredDiscardBias
    55.9  				<< llendl;
   55.10  
   55.11  		sEvaluationTimer.reset();
    56.1 --- a/indra/newview/llviewerwindow.cpp	Sat Feb 15 13:10:12 2014 -0800
    56.2 +++ b/indra/newview/llviewerwindow.cpp	Fri Feb 21 16:45:23 2014 -0800
    56.3 @@ -1979,7 +1979,10 @@
    56.4  
    56.5  	// Constrain floaters to inside the menu and status bar regions.
    56.6  	gFloaterView = main_view->getChild<LLFloaterView>("Floater View");
    56.7 -	for (S32 i = 0; i < LLToolBarEnums::TOOLBAR_COUNT; ++i)
    56.8 +	// <FS:Ansariel> Memory corruption crash at login/logout
    56.9 +	//for (S32 i = 0; i < LLToolBarEnums::TOOLBAR_COUNT; ++i)
   56.10 +	for (S32 i = LLToolBarEnums::TOOLBAR_FIRST; i <= LLToolBarEnums::TOOLBAR_LAST; ++i)
   56.11 +	// </FS:Ansariel>
   56.12  	{
   56.13  		LLToolBar * toolbarp = gToolBarView->getToolbar((LLToolBarEnums::EToolBarLocation)i);
   56.14  		if (toolbarp)
   56.15 @@ -1994,7 +1997,7 @@
   56.16  	LLLayoutPanel* chatbar_panel = dynamic_cast<LLLayoutPanel*>(gToolBarView->getChildView("default_chat_bar")->getParent());
   56.17  	if (chatbar_panel)
   56.18  	{
   56.19 -		chatbar_panel->setReshapeCallback(boost::bind(&LLFloaterView::setMainChatbarRect, gFloaterView, _1, _2));
   56.20 +		chatbar_panel->setReshapePanelCallback(boost::bind(&LLFloaterView::setMainChatbarRect, gFloaterView, _1, _2));
   56.21  		gFloaterView->setMainChatbarRect(chatbar_panel, chatbar_panel->getRect());
   56.22  	}
   56.23  	// </FS:Ansariel>
    57.1 --- a/indra/newview/llvograss.cpp	Sat Feb 15 13:10:12 2014 -0800
    57.2 +++ b/indra/newview/llvograss.cpp	Fri Feb 21 16:45:23 2014 -0800
    57.3 @@ -241,6 +241,7 @@
    57.4  void LLVOGrass::cleanupClass()
    57.5  {
    57.6  	for_each(sSpeciesTable.begin(), sSpeciesTable.end(), DeletePairedPointer());
    57.7 +	sSpeciesTable.clear();
    57.8  }
    57.9  
   57.10  U32 LLVOGrass::processUpdateMessage(LLMessageSystem *mesgsys,
    58.1 --- a/indra/newview/llvotree.cpp	Sat Feb 15 13:10:12 2014 -0800
    58.2 +++ b/indra/newview/llvotree.cpp	Fri Feb 21 16:45:23 2014 -0800
    58.3 @@ -269,6 +269,7 @@
    58.4  void LLVOTree::cleanupClass()
    58.5  {
    58.6  	std::for_each(sSpeciesTable.begin(), sSpeciesTable.end(), DeletePairedPointer());
    58.7 +	sSpeciesTable.clear();
    58.8  }
    58.9  
   58.10  U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
    59.1 Binary file indra/newview/skins/ansastorm/textures/legacy/icon_avatar_online.tga has changed
    60.1 Binary file indra/newview/skins/default/textures/legacy/icon_avatar_online.tga has changed
    61.1 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    61.2 +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    61.3 @@ -514,6 +514,7 @@
    61.4  			<menu_item_call label="In XML-Datei speichern" name="Save to XML"/>
    61.5  			<menu_item_check label="XUI-Namen anzeigen" name="Show XUI Names"/>
    61.6  			<menu_item_check label="Debug-Informationen für Views anzeigen" name="DebugViews"/>
    61.7 +			<menu_item_call label="XUI-Editor" name="UI Preview Tool"/>
    61.8  			<menu_item_call label="Test-IMs senden" name="Send Test IMs"/>
    61.9  			<menu_item_call label="Namen-Cache leeren" name="Flush Names Caches"/>
   61.10  		</menu>
    62.1 --- a/indra/newview/skins/default/xui/de/notifications.xml	Sat Feb 15 13:10:12 2014 -0800
    62.2 +++ b/indra/newview/skins/default/xui/de/notifications.xml	Fri Feb 21 16:45:23 2014 -0800
    62.3 @@ -1643,8 +1643,8 @@
    62.4  	</notification>
    62.5  	<notification name="AutorespondNonFriendsModeSet">
    62.6  		Automatische Antwort für Nicht-Freunde eingeschaltet.
    62.7 +Eingehende Instant Messages von Personen, die sich nicht auf der Freundesliste befinden, werden jetzt mit der konfigurierten automatische Nachricht beantwortet.
    62.8  		<usetemplate ignoretext="Wenn die automatische Antwort für Nicht-Freunde eingeschaltet wird." name="okignore" yestext="OK"/>
    62.9 -Eingehende Instant Messages von Personen, die sich nicht auf der Freundesliste befinden, werden jetzt mit der konfigurierten automatische Nachricht beantwortet.
   62.10  	</notification>
   62.11  	<notification name="RejectTeleportOffersModeSet">
   62.12  		Abweisen von Teleport-Angeboten und -Anforderungen ist eingeschaltet.
   62.13 @@ -2882,6 +2882,14 @@
   62.14      Die Region „[NAME]“ wird in [SECONDS] Sekunden neu gestartet.
   62.15      Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
   62.16    </notification>
   62.17 +	<notification name="RegionRestartMinutesToast">
   62.18 +    Die Region „[NAME]“ wird in [MINUTES] Minuten neu gestartet.
   62.19 +    Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
   62.20 +  </notification>
   62.21 +	<notification name="RegionRestartSecondsToast">
   62.22 +    Die Region „[NAME]“ wird in [SECONDS] Sekunden neu gestartet.
   62.23 +    Wenn Sie in dieser Region bleiben, werden Sie abgemeldet.
   62.24 +  </notification>
   62.25  	<notification name="LoadWebPage">
   62.26  		Webseite [URL] laden?
   62.27  
    63.1 --- a/indra/newview/skins/default/xui/de/panel_fs_contacts_sets.xml	Sat Feb 15 13:10:12 2014 -0800
    63.2 +++ b/indra/newview/skins/default/xui/de/panel_fs_contacts_sets.xml	Fri Feb 21 16:45:23 2014 -0800
    63.3 @@ -12,6 +12,9 @@
    63.4  	<panel.string name="pseudonyms">
    63.5  		Aliase
    63.6  	</panel.string>
    63.7 +	<panel.string name="non_friends">
    63.8 +		Nicht-Freunde
    63.9 +	</panel.string>
   63.10  	<combo_box name="combo_sets" width="199"/>
   63.11  	<button name="config_btn" tool_tip="Ausgewähltes Kontakt-Set konfigurieren"/>
   63.12  	<button name="add_set_btn" tool_tip="Neues Kontakt-Set hinzufügen"/>
    64.1 --- a/indra/newview/skins/default/xui/de/panel_preferences_UI.xml	Sat Feb 15 13:10:12 2014 -0800
    64.2 +++ b/indra/newview/skins/default/xui/de/panel_preferences_UI.xml	Fri Feb 21 16:45:23 2014 -0800
    64.3 @@ -130,6 +130,7 @@
    64.4  			%
    64.5  		</text>
    64.6  		<check_box label="Zeige Toasts im Vordergrund" name="FSShowToastsInFront"/>
    64.7 +		<check_box label="Neue Regions-Neustart-Meldung verwenden" name="FSUseNewRegionRestartNotification"/>
    64.8  		<check_box label="Bei Regions-Neustart-Meldung Bildschirm nicht wackeln" name="FSNoScreenShakeOnRegionRestart"/>
    64.9  	</panel>
   64.10  	<!--Font-->
    65.1 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml	Sat Feb 15 13:10:12 2014 -0800
    65.2 +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml	Fri Feb 21 16:45:23 2014 -0800
    65.3 @@ -155,6 +155,8 @@
    65.4  		<check_box label="Leuchten anzeigen" tool_tip="Stellt Leuchteffekte dar. Stärke muss auf 0 gesetzt werden, um Leuchteffekte zu deaktiveren, falls Schatten aktiviert sind." name="RenderGlow"/>
    65.5  		<slider label="Stärke:" tool_tip="Leuchtstärke. Größer = Breitere und weichere Darstellung (Standardwert: 2)" name="glow_strength"/>
    65.6  		<check_box label="Avatare anzeigen, die nicht vollständig geladen sind" name="RenderUnloadedAvatars"/>
    65.7 +		<check_box label="Framerate begrenzen" name="FSLimitFramerate"/>
    65.8 +		<slider name="MaxFPS" label="FPS:"/>
    65.9  		<slider label="Pre-Caching-Verzögerung bevor die Welt angezeigt wird." tool_tip="Setzt die Verzögerung, nach der die Welt angezeigt wird, nachdem man selbst als Online gemeldet wird. (Standard: 6 Sekunden)" name="PrecachingDelay"/>
   65.10  		<text name="PrecachingDelayText" width="60">
   65.11  			Sekunden
    66.1 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    66.2 +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    66.3 @@ -262,6 +262,7 @@
    66.4  	            <menu_item_call.on_click
    66.5  	             function="Advanced.RebakeTextures" />
    66.6  	        </menu_item_call>
    66.7 +            <menu_item_separator/>
    66.8  		<menu_item_call
    66.9                      label="Reset Default Male Avatar (Character Test)"
   66.10                      name="ResetDefaultAvM">
   66.11 @@ -274,6 +275,7 @@
   66.12              <menu_item_call.on_click
   66.13               function="Advanced.TestFemale" />
   66.14            </menu_item_call>
   66.15 +            <menu_item_separator/>
   66.16  	        <menu_item_check
   66.17  	         label="Show Render Weight For Avatars (Replacement For ARC)"
   66.18  	         name="Avatar Rendering Cost">
   66.19 @@ -4314,6 +4316,13 @@
   66.20                   function="ToggleControl"
   66.21                   parameter="DebugViews" />
   66.22              </menu_item_check>
   66.23 +            <menu_item_call
   66.24 +             label="XUI Preview Tool"
   66.25 +             name="UI Preview Tool">
   66.26 +                <menu_item_call.on_click
   66.27 +                 function="Floater.Toggle"
   66.28 +                 parameter="ui_preview" />
   66.29 +            </menu_item_call>
   66.30            <menu_item_call
   66.31             label="Send Test IMs"
   66.32             name="Send Test IMs">
    67.1 --- a/indra/newview/skins/default/xui/en/notifications.xml	Sat Feb 15 13:10:12 2014 -0800
    67.2 +++ b/indra/newview/skins/default/xui/en/notifications.xml	Fri Feb 21 16:45:23 2014 -0800
    67.3 @@ -7389,6 +7389,24 @@
    67.4  
    67.5    <notification
    67.6     icon="notify.tga"
    67.7 +   name="RegionRestartMinutesToast"
    67.8 +   priority="high"
    67.9 +   type="notify">
   67.10 +The region "[NAME]" will restart in [MINUTES] minutes.
   67.11 +If you stay in this region when it shuts down, you will be logged out.
   67.12 +  </notification>
   67.13 +
   67.14 +  <notification
   67.15 +   icon="notify.tga"
   67.16 +   name="RegionRestartSecondsToast"
   67.17 +   priority="high"
   67.18 +   type="notify">
   67.19 +The region "[NAME]" will restart in [SECONDS] seconds.
   67.20 +If you stay in this region when it shuts down, you will be logged out.
   67.21 +  </notification>
   67.22 +
   67.23 +  <notification
   67.24 +   icon="notify.tga"
   67.25     name="LoadWebPage"
   67.26     show_toast="false"
   67.27     type="notify">
    68.1 --- a/indra/newview/skins/default/xui/en/panel_fs_contacts_sets.xml	Sat Feb 15 13:10:12 2014 -0800
    68.2 +++ b/indra/newview/skins/default/xui/en/panel_fs_contacts_sets.xml	Fri Feb 21 16:45:23 2014 -0800
    68.3 @@ -21,6 +21,10 @@
    68.4       name="pseudonyms">
    68.5      Aliases
    68.6      </panel.string>
    68.7 +    <panel.string
    68.8 +     name="non_friends">
    68.9 +    Non-Friends
   68.10 +    </panel.string>
   68.11      <combo_box
   68.12       follows="left|top|right"
   68.13       layout="topleft"
    69.1 --- a/indra/newview/skins/default/xui/en/panel_preferences_UI.xml	Sat Feb 15 13:10:12 2014 -0800
    69.2 +++ b/indra/newview/skins/default/xui/en/panel_preferences_UI.xml	Fri Feb 21 16:45:23 2014 -0800
    69.3 @@ -849,11 +849,21 @@
    69.4         top_pad="10"
    69.5         width="256" />
    69.6        <check_box
    69.7 +       control_name="FSUseNewRegionRestartNotification"
    69.8 +       height="16"
    69.9 +       label="Use new region restart notification"
   69.10 +       layout="topleft"
   69.11 +       left="10"
   69.12 +       name="FSUseNewRegionRestartNotification"
   69.13 +       top_pad="5"
   69.14 +       width="256" />
   69.15 +      <check_box
   69.16 +       enabled_control="FSUseNewRegionRestartNotification"
   69.17         control_name="FSNoScreenShakeOnRegionRestart"
   69.18         height="16"
   69.19         label="Don't shake my screen when region restart alert message is shown"
   69.20         layout="topleft"
   69.21 -       left="10"
   69.22 +       left="15"
   69.23         name="FSNoScreenShakeOnRegionRestart"
   69.24         top_pad="5"
   69.25         width="256" />
    70.1 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml	Sat Feb 15 13:10:12 2014 -0800
    70.2 +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml	Fri Feb 21 16:45:23 2014 -0800
    70.3 @@ -1150,7 +1150,34 @@
    70.4           name="RenderUnloadedAvatars"
    70.5           top_pad="2"
    70.6           width="256"/>
    70.7 -      
    70.8 +        <check_box
    70.9 +         control_name="FSLimitFramerate"
   70.10 +         height="16"
   70.11 +         initial_value="true"
   70.12 +         label="Limit Framerate"
   70.13 +         layout="topleft"
   70.14 +         left_delta="0"
   70.15 +         name="FSLimitFramerate"
   70.16 +         top_pad="2"
   70.17 +         width="256"/>
   70.18 +        <slider
   70.19 +         enabled_control="FSLimitFramerate"
   70.20 +         control_name="MaxFPS"
   70.21 +         decimal_digits="0"
   70.22 +         follows="left|top"
   70.23 +         height="16"
   70.24 +         increment="1"
   70.25 +         label="FPS:"
   70.26 +         label_width="30"
   70.27 +         layout="topleft"
   70.28 +         max_val="120"
   70.29 +         min_val="15"
   70.30 +         name="MaxFPS"
   70.31 +         left_delta="240"
   70.32 +         mouse_opaque="true"
   70.33 +         show_text="true"
   70.34 +         width="200" />
   70.35 +
   70.36          <slider
   70.37           control_name="PrecachingDelay"
   70.38           decimal_digits="0"
    71.1 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    71.2 +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    71.3 @@ -495,6 +495,7 @@
    71.4  			<menu_item_call label="Salvar a XML" name="Save to XML"/>
    71.5  			<menu_item_check label="Mostrar nombres de XUI" name="Show XUI Names"/>
    71.6  			<menu_item_check label="Mostrar información de depuración de las vistas" name="DebugViews"/>
    71.7 +			<menu_item_call label="Herramienta de previsualización de XUI" name="UI Preview Tool"/>
    71.8  			<menu_item_call label="Enviar MIs de prueba" name="Send Test IMs"/>
    71.9  			<menu_item_call label="Eliminar cachés de nombres" name="Flush Names Caches"/>
   71.10  		</menu>
    72.1 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    72.2 +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    72.3 @@ -387,6 +387,7 @@
    72.4  			<menu_item_call label="Recharger les paramètres de couleurs" name="Reload Color Settings"/>
    72.5  			<menu_item_call label="Afficher le test de police" name="Show Font Test"/>
    72.6  			<menu_item_check label="Afficher les noms XUI" name="Show XUI Names"/>
    72.7 +			<menu_item_call label="Outil d&apos;aperçu XUI" name="UI Preview Tool"/>
    72.8  			<menu_item_call label="Envoyer des IM tests" name="Send Test IMs"/>
    72.9  			<menu_item_call label="Vider les caches de noms" name="Flush Names Caches"/>
   72.10  		</menu>
    73.1 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    73.2 +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    73.3 @@ -615,6 +615,7 @@
    73.4  			<menu_item_check label="デバッグ情報を表示" name="DebugViews" />
    73.5  			<!-- added Jun.30, 2013 -->
    73.6  			
    73.7 +			<menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/>
    73.8  			<menu_item_call label="テスト用 IM を送信する" name="Send Test IMs"/>
    73.9  			<menu_item_call label="名前のキャッシュをフラッシュ" name="Flush Names Caches"/>
   73.10  		</menu>
    74.1 --- a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml	Sat Feb 15 13:10:12 2014 -0800
    74.2 +++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml	Fri Feb 21 16:45:23 2014 -0800
    74.3 @@ -2,5 +2,5 @@
    74.4  <context_menu name="Teleport History Item Context Menu">
    74.5  	<menu_item_call label="Teleportuj" name="Teleport"/>
    74.6  	<menu_item_call label="Więcej szczegółów" name="More Information"/>
    74.7 -	<menu_item_call label="Kopiuj SLurl" name="CopyToClipboard"/>
    74.8 +	<menu_item_call label="Kopiuj SLurl do schowka" name="CopyToClipboard"/>
    74.9  </context_menu>
    75.1 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    75.2 +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    75.3 @@ -503,6 +503,7 @@
    75.4  			<menu_item_call label="Zapisz do XML" name="Save to XML"/>
    75.5  			<menu_item_check label="Pokaż nazwy XUI" name="Show XUI Names"/>
    75.6  			<menu_item_check label="Pokaż informacje debugowania dla widoków" name="DebugViews"/>
    75.7 +			<menu_item_call label="Narzędzie podglądu XUI" name="UI Preview Tool"/>
    75.8  			<menu_item_call label="Wyślij wiadomość (IM) testową" name="Send Test IMs"/>
    75.9  			<menu_item_call label="Wyczyść bufor pamięci nazw" name="Flush Names Caches"/>
   75.10  		</menu>
    76.1 --- a/indra/newview/skins/default/xui/pl/notifications.xml	Sat Feb 15 13:10:12 2014 -0800
    76.2 +++ b/indra/newview/skins/default/xui/pl/notifications.xml	Fri Feb 21 16:45:23 2014 -0800
    76.3 @@ -2898,6 +2898,14 @@
    76.4  		Restart regionu "[NAME]" za [SECONDS] sek.
    76.5  Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
    76.6  	</notification>
    76.7 +	<notification name="RegionRestartMinutesToast">
    76.8 +		Region "[NAME]" zostanie zrestartowany za [MINUTES] minut.
    76.9 +Jeśli w nim zostaniesz, to symulator Cię wyloguje.
   76.10 +	</notification>
   76.11 +	<notification name="RegionRestartSecondsToast">
   76.12 +		Region "[NAME]" zostanie zrestartowany za [SECONDS] sekund.
   76.13 +Jeśli w nim zostaniesz, to symulator Cię wyloguje.
   76.14 +	</notification>
   76.15  	<notification name="LoadWebPage">
   76.16  		Załadować stronę [URL] ?
   76.17  
    77.1 --- a/indra/newview/skins/default/xui/pl/panel_fs_contacts_sets.xml	Sat Feb 15 13:10:12 2014 -0800
    77.2 +++ b/indra/newview/skins/default/xui/pl/panel_fs_contacts_sets.xml	Fri Feb 21 16:45:23 2014 -0800
    77.3 @@ -12,6 +12,9 @@
    77.4  	<panel.string name="pseudonyms">
    77.5  		Aliasy
    77.6  	</panel.string>
    77.7 +	<panel.string name="non_friends">
    77.8 +		Nieznajomi
    77.9 +	</panel.string>
   77.10  	<button name="config_btn" tool_tip="Konfiguruj wybrany zestaw kontaktów" />
   77.11  	<button name="add_set_btn" tool_tip="Dodaj nowy zestaw kontaktów" />
   77.12  	<button name="remove_set_btn" tool_tip="Usuń wybrany zestaw kontaktów" />
    78.1 --- a/indra/newview/skins/default/xui/pl/panel_preferences_UI.xml	Sat Feb 15 13:10:12 2014 -0800
    78.2 +++ b/indra/newview/skins/default/xui/pl/panel_preferences_UI.xml	Fri Feb 21 16:45:23 2014 -0800
    78.3 @@ -120,6 +120,7 @@
    78.4          </text>
    78.5          <slider label="Szerokość tosta czatu:" tool_tip="Szerokość tosta czatu lokalnego ustalana procentowo do szerokości ekranu" name="NearbyToastWidth" />
    78.6          <check_box label="Pokazuj tosty ponad innymi oknami" name="FSShowToastsInFront" />
    78.7 +        <check_box label="Nowy sposób powiadamiania o restarcie regionu" name="FSUseNewRegionRestartNotification" />
    78.8          <check_box label="Nie trzęś moim ekranem, gdy pojawia się informacja o restarcie regionu" name="FSNoScreenShakeOnRegionRestart" />
    78.9      </panel>
   78.10      <panel label="Czcionka" name="UI-font-tab">
    79.1 --- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml	Sat Feb 15 13:10:12 2014 -0800
    79.2 +++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml	Fri Feb 21 16:45:23 2014 -0800
    79.3 @@ -136,6 +136,7 @@
    79.4  			<check_box label="Renderuj blask" tool_tip="Renderuj blask. Siła musi być ustawiona na 0, aby wyłączyć blask gdy cienie są włączone." name="RenderGlow"/>
    79.5  			<slider label="Siła:" tool_tip="Siła blasku. Więcej = szerszy i gładszy (domyślnie 2) " name="glow_strength"/>
    79.6  			<check_box label="Pokazuj awatary, które nie skończyły się ładować" name="RenderUnloadedAvatars"/>
    79.7 +			<check_box label="Limit klatek wyświetlanych na sekundę" name="FSLimitFramerate"/>
    79.8  			<slider label="Opóźnienie wczytywania świata po logowaniu" tool_tip="Jak długo czekać na rozpoczęcie odświeżenia świata dla Ciebie po tym, gdy pokażesz się dostępny/a dla Twoich znajomych (domyślnie 6 sekund)" name="PrecachingDelay"/>
    79.9  			<text name="PrecachingDelayText">
   79.10  				sekund
    80.1 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    80.2 +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    80.3 @@ -435,6 +435,7 @@
    80.4  			<menu_item_call label="Обновить настройки цветов" name="Reload Color Settings"/>
    80.5  			<menu_item_call label="Показать проверку шрифтов" name="Show Font Test"/>
    80.6  			<menu_item_check label="Показать имена XUI" name="Show XUI Names"/>
    80.7 +			<menu_item_call label="Просмотр XUI" name="UI Preview Tool"/>
    80.8  			<menu_item_call label="Отправить тестовое сообщение" name="Send Test IMs"/>
    80.9  			<menu_item_call label="Очистить кэши имен" name="Flush Names Caches"/>
   80.10  		</menu>
    81.1 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    81.2 +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    81.3 @@ -379,6 +379,7 @@
    81.4  			<menu_item_call label="Renk Ayarlarını Tekrar Yükle" name="Reload Color Settings"/>
    81.5  			<menu_item_call label="Fon Testini Göster" name="Show Font Test"/>
    81.6  			<menu_item_check label="XUI Adlarını Göster" name="Show XUI Names"/>
    81.7 +			<menu_item_call label="XKA Önizleme Aracı" name="UI Preview Tool"/>
    81.8  			<menu_item_call label="Test Amaçlı Aİ&apos;ler Gönder" name="Send Test IMs"/>
    81.9  			<menu_item_call label="Ad Önbelleklerini Temizle" name="Flush Names Caches"/>
   81.10  		</menu>
    82.1 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml	Sat Feb 15 13:10:12 2014 -0800
    82.2 +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml	Fri Feb 21 16:45:23 2014 -0800
    82.3 @@ -378,6 +378,7 @@
    82.4  			<menu_item_call label="重新載入顏色設定" name="Reload Color Settings"/>
    82.5  			<menu_item_call label="顯示字型測試" name="Show Font Test"/>
    82.6  			<menu_item_check label="顯示 XUI 名稱" name="Show XUI Names"/>
    82.7 +			<menu_item_call label="XUI 預覽工具" name="UI Preview Tool"/>
    82.8  			<menu_item_call label="送出測試 IMs" name="Send Test IMs"/>
    82.9  			<menu_item_call label="沖洗名稱快取資料" name="Flush Names Caches"/>
   82.10  		</menu>
    83.1 Binary file indra/newview/skins/firestorm/textures/legacy/icon_avatar_online.tga has changed
    84.1 Binary file indra/newview/skins/latency/textures/legacy/icon_avatar_online.tga has changed
    85.1 Binary file indra/newview/skins/metaharper/textures/legacy/icon_avatar_online.tga has changed
    86.1 Binary file indra/newview/skins/vintage/textures/legacy/icon_avatar_online.tga has changed
    87.1 --- a/indra/newview/viewer_manifest.py	Sat Feb 15 13:10:12 2014 -0800
    87.2 +++ b/indra/newview/viewer_manifest.py	Fri Feb 21 16:45:23 2014 -0800
    87.3 @@ -1210,6 +1210,87 @@
    87.4              print "Skipping llcommon.so (assuming llcommon was linked statically)"
    87.5  
    87.6          self.path("featuretable_linux.txt")
    87.7 +        
    87.8 +        if self.is_packaging_viewer():
    87.9 +          if self.prefix("../packages/lib/release", dst="lib"):
   87.10 +            self.path("libapr-1.so")
   87.11 +            self.path("libapr-1.so.0")
   87.12 +            self.path("libapr-1.so.0.4.5")
   87.13 +            self.path("libaprutil-1.so")
   87.14 +            self.path("libaprutil-1.so.0")
   87.15 +            self.path("libaprutil-1.so.0.4.1")
   87.16 +            self.path("libboost_context-mt.so.*")
   87.17 +            self.path("libboost_filesystem-mt.so.*")
   87.18 +            self.path("libboost_program_options-mt.so.*")
   87.19 +            self.path("libboost_regex-mt.so.*")
   87.20 +            self.path("libboost_signals-mt.so.*")
   87.21 +            self.path("libboost_system-mt.so.*")
   87.22 +            self.path("libboost_thread-mt.so.*")
   87.23 +            self.path("libboost_chrono-mt.so.*") #<FS:TM> FS spcific
   87.24 +            self.path("libboost_date_time-mt.so.*") #<FS:TM> FS spcific
   87.25 +            self.path("libboost_wave-mt.so.*") #<FS:TM> FS spcific
   87.26 +            self.path("libcollada14dom.so")
   87.27 +            self.path("libdb*.so")
   87.28 +            self.path("libcrypto.so.*")
   87.29 +            self.path("libexpat.so.*")
   87.30 +            self.path("libssl.so.1.0.0")
   87.31 +            self.path("libGLOD.so")
   87.32 +            self.path("libminizip.so")
   87.33 +            self.path("libuuid.so*")
   87.34 +            self.path("libSDL-1.2.so.*")
   87.35 +            self.path("libdirectfb-1.*.so.*")
   87.36 +            self.path("libfusion-1.*.so.*")
   87.37 +            self.path("libdirect-1.*.so.*")
   87.38 +            self.path("libopenjpeg.so*")
   87.39 +            self.path("libdirectfb-1.4.so.5")
   87.40 +            self.path("libfusion-1.4.so.5")
   87.41 +            self.path("libdirect-1.4.so.5*")
   87.42 +            self.path("libhunspell-1.3.so*")
   87.43 +            self.path("libalut.so")
   87.44 +            self.path("libpng15.so.15") #use provided libpng to workaround incompatible system versions on some distros
   87.45 +            self.path("libpng15.so.15.13.0") #use provided libpng to workaround incompatible system versions on some distros
   87.46 +            self.path("libopenal.so", "libopenal.so.1")
   87.47 +            #self.path("libnotify.so.1.1.2", "libnotify.so.1") # LO - uncomment when testing libnotify(growl) on linux
   87.48 +            self.path("libpangox-1.0.so*")
   87.49 +            # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs
   87.50 +            # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1
   87.51 +            # and libfontconfig.so. Before we added support for library-file
   87.52 +            # wildcards, though, this self.path() call specifically named
   87.53 +            # libfontconfig.so.1.4.4 WITHOUT also copying the symlinks. When I
   87.54 +            # (nat) changed the call to self.path("libfontconfig.so.*"), we
   87.55 +            # ended up with the libfontconfig.so.1 symlink in the target
   87.56 +            # directory as well. But guess what! At least on Ubuntu 10.04,
   87.57 +            # certain viewer fonts look terrible with libfontconfig.so.1
   87.58 +            # present in the target directory. Removing that symlink suffices
   87.59 +            # to improve them. I suspect that means we actually do better when
   87.60 +            # the viewer fails to find our packaged libfontconfig.so*, falling
   87.61 +            # back on the system one instead -- but diagnosing and fixing that
   87.62 +            # is a bit out of scope for the present project. Meanwhile, this
   87.63 +            # particular wildcard specification gets us exactly what the
   87.64 +            # previous call did, without having to explicitly state the
   87.65 +            # version number.
   87.66 +            self.path("libfontconfig.so.*.*")
   87.67 +            try:
   87.68 +                self.path("libtcmalloc.so*") #formerly called google perf tools
   87.69 +                pass
   87.70 +            except:
   87.71 +                print "tcmalloc files not found, skipping"
   87.72 +                pass
   87.73 +
   87.74 +            self.end_prefix("lib")
   87.75 +
   87.76 +            # Vivox runtimes
   87.77 +            # Currentelly, the 32-bit ones will work with a 64-bit client.
   87.78 +            if self.prefix(src="../packages/lib/release", dst="bin"):
   87.79 +                    self.path("SLVoice")
   87.80 +                    self.end_prefix()
   87.81 +            if self.prefix(src="../packages/lib/release", dst="lib"):
   87.82 +                    self.path("libortp.so")
   87.83 +                    self.path("libsndfile.so.1")
   87.84 +                    #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib
   87.85 +                    self.path("libvivoxsdk.so")
   87.86 +                    self.path("libvivoxplatform.so")
   87.87 +                    self.end_prefix("lib")
   87.88  
   87.89      def copy_finish(self):
   87.90          # Force executable permissions to be set for scripts
   87.91 @@ -1278,70 +1359,10 @@
   87.92      def construct(self):
   87.93          super(Linux_i686_Manifest, self).construct()
   87.94  
   87.95 -        if self.prefix("../packages/lib/release", dst="lib"):
   87.96 -            self.path("libapr-1.so")
   87.97 -            self.path("libapr-1.so.0")
   87.98 -            self.path("libapr-1.so.0.4.5")
   87.99 -            self.path("libaprutil-1.so")
  87.100 -            self.path("libaprutil-1.so.0")
  87.101 -            self.path("libaprutil-1.so.0.4.1")
  87.102 -            self.path("libboost_context-mt.so.*")
  87.103 -            self.path("libboost_filesystem-mt.so.*")
  87.104 -            self.path("libboost_program_options-mt.so.*")
  87.105 -            self.path("libboost_regex-mt.so.*")
  87.106 -            self.path("libboost_signals-mt.so.*")
  87.107 -            self.path("libboost_system-mt.so.*")
  87.108 -            self.path("libboost_thread-mt.so.*")
  87.109 -            self.path("libboost_chrono-mt.so.*") #<FS:TM> FS spcific
  87.110 -            self.path("libboost_date_time-mt.so.*") #<FS:TM> FS spcific
  87.111 -            self.path("libboost_wave-mt.so.*") #<FS:TM> FS spcific
  87.112 -            self.path("libcollada14dom.so")
  87.113 -            self.path("libdb*.so")
  87.114 -            self.path("libcrypto.so.*")
  87.115 -            self.path("libexpat.so.*")
  87.116 -            self.path("libssl.so.1.0.0")
  87.117 -            self.path("libGLOD.so")
  87.118 -            self.path("libminizip.so")
  87.119 -            self.path("libuuid.so*")
  87.120 -            self.path("libSDL-1.2.so.*")
  87.121 -            self.path("libdirectfb-1.*.so.*")
  87.122 -            self.path("libfusion-1.*.so.*")
  87.123 -            self.path("libdirect-1.*.so.*")
  87.124 -            self.path("libopenjpeg.so*")
  87.125 -            self.path("libdirectfb-1.4.so.5")
  87.126 -            self.path("libfusion-1.4.so.5")
  87.127 -            self.path("libdirect-1.4.so.5*")
  87.128 -            self.path("libhunspell-1.3.so*")
  87.129 -            self.path("libalut.so")
  87.130 -            self.path("libpng15.so.15") #use provided libpng to workaround incompatible system versions on some distros
  87.131 -            self.path("libpng15.so.15.13.0") #use provided libpng to workaround incompatible system versions on some distros
  87.132 -            self.path("libopenal.so", "libopenal.so.1")
  87.133 +        if self.is_packaging_viewer():
  87.134 +          if self.prefix("../packages/lib/release", dst="lib"):
  87.135 +
  87.136              self.path("libopenal.so", "libvivoxoal.so.1") # vivox's sdk expects this soname
  87.137 -            #self.path("libnotify.so.1.1.2", "libnotify.so.1") # LO - uncomment when testing libnotify(growl) on linux
  87.138 -            # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs
  87.139 -            # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1
  87.140 -            # and libfontconfig.so. Before we added support for library-file
  87.141 -            # wildcards, though, this self.path() call specifically named
  87.142 -            # libfontconfig.so.1.4.4 WITHOUT also copying the symlinks. When I
  87.143 -            # (nat) changed the call to self.path("libfontconfig.so.*"), we
  87.144 -            # ended up with the libfontconfig.so.1 symlink in the target
  87.145 -            # directory as well. But guess what! At least on Ubuntu 10.04,
  87.146 -            # certain viewer fonts look terrible with libfontconfig.so.1
  87.147 -            # present in the target directory. Removing that symlink suffices
  87.148 -            # to improve them. I suspect that means we actually do better when
  87.149 -            # the viewer fails to find our packaged libfontconfig.so*, falling
  87.150 -            # back on the system one instead -- but diagnosing and fixing that
  87.151 -            # is a bit out of scope for the present project. Meanwhile, this
  87.152 -            # particular wildcard specification gets us exactly what the
  87.153 -            # previous call did, without having to explicitly state the
  87.154 -            # version number.
  87.155 -            self.path("libfontconfig.so.*.*")
  87.156 -            try:
  87.157 -                self.path("libtcmalloc.so*") #formerly called google perf tools
  87.158 -                pass
  87.159 -            except:
  87.160 -                print "tcmalloc files not found, skipping"
  87.161 -                pass
  87.162  
  87.163              try:
  87.164                      self.path("libfmodex-*.so")
  87.165 @@ -1350,7 +1371,7 @@
  87.166              except:
  87.167                      print "Skipping libfmodex.so - not found"
  87.168                      pass
  87.169 -			
  87.170 +
  87.171              self.end_prefix("lib")
  87.172  
  87.173              self.prefix(src="../packages/lib/release/x86", dst="lib")
  87.174 @@ -1362,25 +1383,29 @@
  87.175  
  87.176              self.end_prefix("lib")
  87.177  
  87.178 -            # Vivox runtimes
  87.179 -            if self.prefix(src="../packages/lib/release", dst="bin"):
  87.180 -                    self.path("SLVoice")
  87.181 -                    self.end_prefix()
  87.182 -            if self.prefix(src="../packages/lib/release", dst="lib"):
  87.183 -                    self.path("libortp.so")
  87.184 -                    self.path("libsndfile.so.1")
  87.185 -                    #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib
  87.186 -                    self.path("libvivoxsdk.so")
  87.187 -                    self.path("libvivoxplatform.so")
  87.188 -                    self.end_prefix("lib")
  87.189 -
  87.190 -            self.strip_binaries()
  87.191 -
  87.192  
  87.193  class Linux_x86_64_Manifest(LinuxManifest):
  87.194      def construct(self):
  87.195          super(Linux_x86_64_Manifest, self).construct()
  87.196  
  87.197 +        if self.is_packaging_viewer():        
  87.198 +          if self.prefix("../packages/lib/release", dst="lib"):
  87.199 +
  87.200 +            # vivox 32-bit hack.
  87.201 +            # one has to extract libopenal.so from the 32-bit openal package, or official LL viewer, and rename it to libopenal32.so
  87.202 +            # and place it in the prebuilt lib/release directory
  87.203 +            self.path("libopenal32.so", "libvivoxoal.so.1") # vivox's sdk expects this soname
  87.204 +
  87.205 +            try:
  87.206 +                    self.path("libfmodex64-*.so")
  87.207 +                    self.path("libfmodex64.so")
  87.208 +                    pass
  87.209 +            except:
  87.210 +                    print "Skipping libfmodex.so - not found"
  87.211 +                    pass
  87.212 +
  87.213 +            self.end_prefix("lib")
  87.214 +
  87.215          # support file for valgrind debug tool
  87.216          self.path("secondlife-i686.supp")
  87.217  

mercurial