diff options
| -rwxr-xr-x | doc/contributions.txt | 2 | ||||
| -rwxr-xr-x | indra/newview/llnamelistctrl.cpp | 33 | ||||
| -rwxr-xr-x | indra/newview/llnamelistctrl.h | 13 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/menu_viewer.xml | 10 | ||||
| -rwxr-xr-x | indra/newview/viewer_manifest.py | 28 | 
5 files changed, 68 insertions, 18 deletions
diff --git a/doc/contributions.txt b/doc/contributions.txt index 57fd77886c..8e2b4ddde2 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -181,6 +181,7 @@ Ansariel Hiller  	STORM-1931  	MAINT-2773  	STORM-2011 +	MAINT-3187  Aralara Rajal  Arare Chantilly  	CHUIBUG-191 @@ -1141,6 +1142,7 @@ snowy Sidran  Sovereign Engineer      MAINT-2334      OPEN-189 +    STORM-1972  SpacedOut Frye  	VWR-34  	VWR-45 diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 7ddd04fed0..3b5a69fd3a 100755 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -64,8 +64,7 @@ LLNameListCtrl::LLNameListCtrl(const LLNameListCtrl::Params& p)  	mNameColumnIndex(p.name_column.column_index),  	mNameColumn(p.name_column.column_name),  	mAllowCallingCardDrop(p.allow_calling_card_drop), -	mShortNames(p.short_names), -	mAvatarNameCacheConnection() +	mShortNames(p.short_names)  {}  // public @@ -328,13 +327,16 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(  			else  			{  				// ...schedule a callback -				// This is not correct and will likely lead to partially populated lists in cases where avatar names are not cached. -				// *TODO : Change this to have 2 callbacks : one callback per list item and one for the whole list. -				if (mAvatarNameCacheConnection.connected()) +				avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(id); +				if (it != mAvatarNameCacheConnections.end())  				{ -					mAvatarNameCacheConnection.disconnect(); +					if (it->second.connected()) +					{ +						it->second.disconnect(); +					} +					mAvatarNameCacheConnections.erase(it);  				} -				mAvatarNameCacheConnection = LLAvatarNameCache::get(id,boost::bind(&LLNameListCtrl::onAvatarNameCache,this, _1, _2, item->getHandle())); +				mAvatarNameCacheConnections[id] = LLAvatarNameCache::get(id,boost::bind(&LLNameListCtrl::onAvatarNameCache,this, _1, _2, suffix, item->getHandle()));  			}  			break;  		} @@ -391,9 +393,18 @@ void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)  void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,  									   const LLAvatarName& av_name, +									   std::string suffix,  									   LLHandle<LLNameListItem> item)  { -	mAvatarNameCacheConnection.disconnect(); +	avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(agent_id); +	if (it != mAvatarNameCacheConnections.end()) +	{ +		if (it->second.connected()) +		{ +			it->second.disconnect(); +		} +		mAvatarNameCacheConnections.erase(it); +	}  	std::string name;  	if (mShortNames) @@ -401,6 +412,12 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,  	else  		name = av_name.getCompleteName(); +	// Append optional suffix. +	if (!suffix.empty()) +	{ +		name.append(suffix); +	} +  	LLNameListItem* list_item = item.get();  	if (list_item && list_item->getUUID() == agent_id)  	{ diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 92e82b672d..4ed260d847 100755 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -114,10 +114,14 @@ protected:  	LLNameListCtrl(const Params&);  	virtual ~LLNameListCtrl()  	{ -		if (mAvatarNameCacheConnection.connected()) +		for (avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.begin(); it != mAvatarNameCacheConnections.end(); ++it)  		{ -			mAvatarNameCacheConnection.disconnect(); +			if (it->second.connected()) +			{ +				it->second.disconnect(); +			}  		} +		mAvatarNameCacheConnections.clear();  	}  	friend class LLUICtrlFactory;  public: @@ -155,14 +159,15 @@ public:  	/*virtual*/ void	mouseOverHighlightNthItem( S32 index );  private:  	void showInspector(const LLUUID& avatar_id, bool is_group); -	void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, LLHandle<LLNameListItem> item); +	void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, std::string suffix, LLHandle<LLNameListItem> item);  private:  	S32    			mNameColumnIndex;  	std::string		mNameColumn;  	BOOL			mAllowCallingCardDrop;  	bool			mShortNames;  // display name only, no SLID -	boost::signals2::connection mAvatarNameCacheConnection; +	typedef std::map<LLUUID, boost::signals2::connection> avatar_name_cache_connection_map_t; +	avatar_name_cache_connection_map_t mAvatarNameCacheConnections;  }; diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index e5e2bd4c11..efff986086 100755 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2554,6 +2554,16 @@             parameter="lights" />          </menu_item_check>          <menu_item_check +         label="Particles" +         name="Particles"> +          <menu_item_check.on_check +           function="Advanced.CheckInfoDisplay" +           parameter="particles" /> +          <menu_item_check.on_click +           function="Advanced.ToggleInfoDisplay" +           parameter="particles" /> +        </menu_item_check> +        <menu_item_check           label="Collision Skeleton"           name="Collision Skeleton">            <menu_item_check.on_check diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 9a617c2a13..96b4c7268c 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -38,7 +38,7 @@ viewer_dir = os.path.dirname(__file__)  # Put it FIRST because some of our build hosts have an ancient install of  # indra.util.llmanifest under their system Python!  sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python")) -from indra.util.llmanifest import LLManifest, main, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL +from indra.util.llmanifest import LLManifest, main, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError  try:      from llbase import llsd  except ImportError: @@ -818,11 +818,27 @@ class Darwin_i386_Manifest(ViewerManifest):                  keychain_pwd = open(keychain_pwd_path).read().rstrip()                  self.run_command('security unlock-keychain -p "%s" "%s/Library/Keychains/viewer.keychain"' % ( keychain_pwd, home_path ) ) -                self.run_command('codesign --verbose --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % { -                                 'home_path' : home_path, -                                 'identity': identity, -                                 'bundle': self.get_dst_prefix() -                }) +                signed=False +                sign_attempts=3 +                sign_retry_wait=15 +                while (not signed) and (sign_attempts > 0): +                    try: +                        sign_attempts-=1; +                        self.run_command( +                           'codesign --verbose --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % { +                               'home_path' : home_path, +                               'identity': identity, +                               'bundle': self.get_dst_prefix() +                               }) +                        signed=True # if no exception was raised, the codesign worked +                    except ManifestError, err: +                        if sign_attempts: +                            print >> sys.stderr, "codesign failed, waiting %d seconds before retrying" % sign_retry_wait +                            time.sleep(sign_retry_wait) +                            sign_retry_wait*=2 +                        else: +                            print >> sys.stderr, "Maximum codesign attempts exceeded; giving up" +                            raise          imagename="SecondLife_" + '_'.join(self.args['version'])  | 
