diff options
Diffstat (limited to 'indra')
28 files changed, 209 insertions, 187 deletions
| diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp index cb81c39103..50942e55ca 100644 --- a/indra/llui/llmultisliderctrl.cpp +++ b/indra/llui/llmultisliderctrl.cpp @@ -331,6 +331,10 @@ void LLMultiSliderCtrl::updateText()  void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)  {  	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent()); +	llassert(self); +	if (!self) // cast failed - wrong type! :O +		return; +  	if (!ctrl)  		return; diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 33147f30c9..575b6e3b6c 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1631,14 +1631,9 @@ void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon)  void LLTabContainer::reshapeTuple(LLTabTuple* tuple)  {  	static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); -	static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2); -	static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2);  	if (!mIsVertical)  	{ -		tuple->mButton->setImageOverlayTopPad(image_top_padding); -		tuple->mButton->setImageOverlayBottomPad(image_bottom_padding); -  		// remove current width from total tab strip width  		mTotalTabWidth -= tuple->mButton->getRect().getWidth(); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8b3a7b5e51..4207185dc2 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8490,6 +8490,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>ShowVoiceVisualizersInCalls</key> +    <map> +      <key>Comment</key> +      <string>Enables in-world voice visualizers, voice gestures and lip-sync while in group or P2P calls.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>ShowVolumeSettingsPopup</key>      <map>        <key>Comment</key> @@ -9983,28 +9994,6 @@        <key>Value</key>        <integer>15</integer>      </map> -    <key>UIButtonImageTopPadding</key> -    <map> -      <key>Comment</key> -      <string>Button Overlay Image Top Padding</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>2</integer> -    </map> -    <key>UIButtonImageBottomPadding</key> -    <map> -      <key>Comment</key> -      <string>Button Overlay Image Bottom Padding</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>2</integer> -    </map>  	<key>UploadBakedTexOld</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp index 7404fe5bc4..72ab9235cf 100644 --- a/indra/newview/llagentui.cpp +++ b/indra/newview/llagentui.cpp @@ -150,11 +150,17 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const  				sim_access_string.c_str());  			break;  		case LOCATION_FORMAT_NO_MATURITY: -		case LOCATION_FORMAT_FULL:  			buffer = llformat("%s (%d, %d, %d)",  				region_name.c_str(),  				pos_x, pos_y, pos_z);  			break; +		case LOCATION_FORMAT_FULL: +			buffer = llformat("%s (%d, %d, %d)%s%s", +				region_name.c_str(), +				pos_x, pos_y, pos_z, +				sim_access_string.empty() ? "" : " - ", +				sim_access_string.c_str()); +			break;  		}  	}  	else diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 6620780b27..6078620e87 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1290,25 +1290,29 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,  							j,  							new_wearable,  							todo); -					if (isWearableCopyable((EWearableType)type, j)) +					llassert(item); +					if (item)  					{ -						copy_inventory_item( -							gAgent.getID(), -							item->getPermissions().getOwner(), -							item->getUUID(), -							folder_id, -							new_name, -							cb); -					} -					else -					{ -						move_inventory_item( -							gAgent.getID(), -							gAgent.getSessionID(), -							item->getUUID(), -							folder_id, -							new_name, -							cb); +						if (isWearableCopyable((EWearableType)type, j)) +						{ +							copy_inventory_item( +									    gAgent.getID(), +									    item->getPermissions().getOwner(), +									    item->getUUID(), +									    folder_id, +									    new_name, +									    cb); +						} +						else +						{ +							move_inventory_item( +									    gAgent.getID(), +									    gAgent.getSessionID(), +									    item->getUUID(), +									    folder_id, +									    new_name, +									    cb); +						}  					}  				}  			} diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 1e8a739d78..bf7c735488 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -1264,8 +1264,11 @@ LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLIn  void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem)  {  	LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId); - -	items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem); +	llassert(beforeItem); +	if (beforeItem) +	{ +		items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem); +	}  }  // EOF diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index fb724f30e0..fbb90c69f3 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -287,6 +287,7 @@ BOOL LLFeatureManager::loadFeatureTables()  			if (!flp)  			{  				LL_ERRS("RenderInit") << "Specified parameter before <list> keyword!" << LL_ENDL; +				return FALSE;  			}  			S32 available;  			F32 recommended; diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index b684e1f985..90617a337a 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -427,8 +427,13 @@ void LLFloaterGesture::onClickPlay()  		BOOL inform_server = TRUE;  		BOOL deactivate_similar = FALSE;  		LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id)); -		LLGestureManager::instance().activateGestureWithAsset(item_id, gInventory.getItem(item_id)->getAssetUUID(), inform_server, deactivate_similar); -		LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL; +		LLViewerInventoryItem *item = gInventory.getItem(item_id); +		llassert(item); +		if (item) +		{ +			LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar); +			LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL; +		}  	}  	else  	{ @@ -510,15 +515,16 @@ void LLFloaterGesture::onCopyPasteAction(const LLSD& command)  		if(ids.empty() || !gInventory.isCategoryComplete(mGestureFolderID))  			return;  		LLInventoryCategory* gesture_dir = gInventory.getCategory(mGestureFolderID); +		llassert(gesture_dir);  		LLPointer<GestureCopiedCallback> cb = new GestureCopiedCallback(this);  		for(LLDynamicArray<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++)  		{  			LLInventoryItem* item = gInventory.getItem(*it); -			LLStringUtil::format_map_t string_args; -			string_args["[COPY_NAME]"] = item->getName(); -			if(item && item->getInventoryType() == LLInventoryType::IT_GESTURE) +			if(gesture_dir && item && item->getInventoryType() == LLInventoryType::IT_GESTURE)  			{ +				LLStringUtil::format_map_t string_args; +				string_args["[COPY_NAME]"] = item->getName();  				LL_DEBUGS("Gesture")<< "Copying gesture " << item->getName() << "  "<< item->getUUID() << " into "  										<< gesture_dir->getName() << "  "<< gesture_dir->getUUID() << LL_ENDL;  				copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(),  diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index 90db8988b2..94b5ebba00 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -112,10 +112,15 @@ void LLNotificationChannelPanel::onClickNotification(void* user_data)  {  	LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data;  	if (!self) return; -	void* data = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected()->getUserdata(); -	if (data) +	LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected(); +	llassert(firstselected); +	if (firstselected)  	{ -		gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); +		void* data = firstselected->getUserdata(); +		if (data) +		{ +			gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); +		}  	}  } @@ -124,10 +129,15 @@ void LLNotificationChannelPanel::onClickNotificationReject(void* user_data)  {  	LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data;  	if (!self) return; -	void* data = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected()->getUserdata(); -	if (data) +	LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected(); +	llassert(firstselected); +	if (firstselected)  	{ -		gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); +		void* data = firstselected->getUserdata(); +		if (data) +		{ +			gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); +		}  	}  } diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index bde86a4034..5c0593ad29 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -880,7 +880,11 @@ void LLFloaterProperties::dirtyAll()  		 iter != inst_list.end(); ++iter)  	{  		LLFloaterProperties* floater = dynamic_cast<LLFloaterProperties*>(*iter); -		floater->dirty(); +		llassert(floater); // else cast failed - wrong type D: +		if (floater) +		{ +			floater->dirty(); +		}  	}  } diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index a33ab6f346..94facb6b20 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -666,8 +666,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)  	if (mCheckCopyCenters) mCheckCopyCenters	->setVisible( create_visible );  	if (mCheckCopyRotates) mCheckCopyRotates	->setVisible( create_visible ); -	if (mCheckCopyCenters) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() ); -	if (mCheckCopyRotates) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() ); +	if (mCheckCopyCenters && mCheckCopySelection) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() ); +	if (mCheckCopyRotates && mCheckCopySelection) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() );  	// Land buttons  	BOOL land_visible = (tool == LLToolBrushLand::getInstance() || tool == LLToolSelectLand::getInstance() ); diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 3e804bef9d..f61c86db14 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -362,8 +362,7 @@ BOOL LLFadeEventTimer::tick()  	if(NULL == mParent)	// no more need to tick, so suicide  	{ -		delete this; -		return FALSE; +		return TRUE;  	}  	// Set up colors diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 4c1019a882..4db75bbd8a 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -677,9 +677,12 @@ void LLGroupMgrGroupData::sendRoleChanges()  				break;  			}  			case RC_UPDATE_ALL: +				// fall through  			case RC_UPDATE_POWERS:  				need_power_recalc = true; +				// fall through  			case RC_UPDATE_DATA: +				// fall through  			default:   			{  				LLGroupRoleData* group_role_data = (*role_it).second; @@ -762,7 +765,7 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer)  		mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer));  } -void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer)  {  	if(group_id.notNull() && observer)  	{ @@ -792,7 +795,7 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer)  	}  } -void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer)  {  	if(group_id.isNull() || !observer)  	{ @@ -1364,7 +1367,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)  			gi->second->mChanged = FALSE; -			// notify LLParticularGroupMgrObserver +			// notify LLParticularGroupObserver  		    observer_map_t::iterator obs_it = mParticularObservers.find(group_id);  		    if(obs_it == mParticularObservers.end())  		        return; diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 588b4a9034..2c86de8b97 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -53,10 +53,10 @@ protected:  	LLUUID	mID;  }; -class LLParticularGroupMgrObserver +class LLParticularGroupObserver  {  public: -	virtual ~LLParticularGroupMgrObserver(){} +	virtual ~LLParticularGroupObserver(){}  	virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0;  }; @@ -313,9 +313,9 @@ public:  	~LLGroupMgr();  	void addObserver(LLGroupMgrObserver* observer); -	void addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer); +	void addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer);  	void removeObserver(LLGroupMgrObserver* observer); -	void removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer); +	void removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer);  	LLGroupMgrGroupData* getGroupData(const LLUUID& id);  	void sendGroupPropertiesRequest(const LLUUID& group_id); @@ -374,7 +374,7 @@ private:  	typedef std::map<LLUUID, LLGroupMgrGroupData*> group_map_t;  	group_map_t mGroups; -	typedef std::set<LLParticularGroupMgrObserver*> observer_set_t; +	typedef std::set<LLParticularGroupObserver*> observer_set_t;  	typedef std::map<LLUUID,observer_set_t> observer_map_t;  	observer_map_t mParticularObservers;  }; diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index ba034609e9..7162386d08 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -121,36 +121,6 @@ void LLIMFloaterContainer::onCloseFloater(LLUUID& id)  	mSessions.erase(id);  } -void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type) -{ -	if (APT_PROPERTIES == type) -	{ -		LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); -		if (avatar_data) -		{ -			LLUUID avatar_id = avatar_data->avatar_id; -			LLUUID* cached_avatarId = LLAvatarIconIDCache::getInstance()->get(avatar_id); -			if(cached_avatarId && cached_avatarId->notNull() && avatar_data->image_id != *cached_avatarId) -			{ -				LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id); -				mTabContainer->setTabImage(get_ptr_in_map(mSessions, avatar_id), avatar_data->image_id); -			} -		} -	} -} - -void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc) -{ -	if (GC_PROPERTIES == gc) -	{ -		LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id); -		if (group_data && group_data->mInsigniaID.notNull()) -		{ -			mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID); -		} -	} -} -  void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data)  {  	LLUUID session_id = data["from_id"].asUUID(); diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index b07ef2d71d..46c0617c01 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -43,7 +43,7 @@  class LLTabContainer; -class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLParticularGroupMgrObserver +class LLIMFloaterContainer : public LLMultiFloater  {  public:  	LLIMFloaterContainer(const LLSD& seed); @@ -57,9 +57,6 @@ public:  								BOOL select_added_floater,   								LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END); -	void processProperties(void* data, EAvatarProcessorType type); -	void changed(const LLUUID& group_id, LLGroupChange gc); -  	static LLFloater* getCurrentVoiceFloater();  	static LLIMFloaterContainer* findInstance(); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 0965cbd0dc..5a6c6ebbee 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1665,6 +1665,7 @@ void LLOutgoingCallDialog::show(const LLSD& key)  	{  	case LLVoiceChannel::STATE_CALL_STARTED :  		getChild<LLTextBox>("calling")->setVisible(true); +		getChild<LLButton>("Cancel")->setVisible(true);  		if(show_oldchannel)  		{  			getChild<LLTextBox>("leaving")->setVisible(true); diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 36a542cfa0..cd6c727b5c 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -406,21 +406,24 @@ void LLPanelLandmarkInfo::populateFoldersList()  	// Put the "Landmarks" folder first in list.  	LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); -	const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id); -	if (!cat) +	const LLViewerInventoryCategory* lmcat = gInventory.getCategory(landmarks_id); +	if (!lmcat)  	{  		llwarns << "Cannot find the landmarks folder" << llendl;  	} -	std::string cat_full_name = getFullFolderName(cat); -	mFolderCombo->add(cat_full_name, cat->getUUID()); +	else +	{ +		std::string cat_full_name = getFullFolderName(lmcat); +		mFolderCombo->add(cat_full_name, lmcat->getUUID()); +	}  	typedef std::vector<folder_pair_t> folder_vec_t;  	folder_vec_t folders;  	// Sort the folders by their full name.  	for (S32 i = 0; i < cats.count(); i++)  	{ -		cat = cats.get(i); -		cat_full_name = getFullFolderName(cat); +		const LLViewerInventoryCategory* cat = cats.get(i); +		std::string cat_full_name = getFullFolderName(cat);  		folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name));  	}  	sort(folders.begin(), folders.end(), cmp_folders); diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index ada65c98a4..8eb0b69491 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -843,10 +843,13 @@ void LLPanelPicks::onPanelClassifiedClose(LLPanelClassifiedInfo* panel)  			{  				LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(  					mClassifiedsList->getItemByValue(values[n])); - -				c_item->setClassifiedName(panel->getClassifiedName()); -				c_item->setDescription(panel->getDescription()); -				c_item->setSnapshotId(panel->getSnapshotId()); +				llassert(c_item); +				if (c_item) +				{ +					c_item->setClassifiedName(panel->getClassifiedName()); +					c_item->setDescription(panel->getDescription()); +					c_item->setSnapshotId(panel->getSnapshotId()); +				}  			}  		}  	} diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index a8feaf690d..3221745fa3 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -661,7 +661,9 @@ void LLScriptEdCore::onBtnDynamicHelp()  		live_help_floater = new LLFloater(LLSD());  		LLUICtrlFactory::getInstance()->buildFloater(live_help_floater, "floater_lsl_guide.xml", NULL);  		LLFloater* parent = dynamic_cast<LLFloater*>(getParent()); -		parent->addDependentFloater(live_help_floater, TRUE); +		llassert(parent); +		if (parent) +			parent->addDependentFloater(live_help_floater, TRUE);  		live_help_floater->childSetCommitCallback("lock_check", onCheckLock, this);  		live_help_floater->childSetValue("lock_check", gSavedSettings.getBOOL("ScriptHelpFollowsCursor"));  		live_help_floater->childSetCommitCallback("history_combo", onHelpComboCommit, this); diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 44348ba429..0275736f6d 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -231,20 +231,23 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)  	// PERMISSIONS LOOKUP //  	//////////////////////// +	llassert(item); +	if (!item) return; +  	// do not enable the UI for incomplete items.  	BOOL is_complete = item->isComplete();  	const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(item->getInventoryType());  	const BOOL is_calling_card = (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD);  	const LLPermissions& perm = item->getPermissions();  	const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm,  -															GP_OBJECT_MANIPULATE); +								GP_OBJECT_MANIPULATE);  	const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm,  -													  GP_OBJECT_SET_SALE) && +							  GP_OBJECT_SET_SALE) &&  		!cannot_restrict_permissions;  	const BOOL is_link = item->getIsLinkType();  	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	bool not_in_trash = item && (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id); +	bool not_in_trash = (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id);  	// You need permission to modify the object to modify an inventory  	// item in it. diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index bf1e307d71..fdf9e1df2e 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -1485,6 +1485,12 @@ BOOL LLToolPie::pickRightMouseDownCallback()  			while( object && object->isAttachment())  			{  				object = (LLViewerObject*)object->getParent(); +				llassert(object); +			} + +			if (!object) +			{ +				return TRUE; // unexpected, but escape  			}  			// Object is an avatar, so check for mute by id. diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index de6fcbd8bc..0f26975149 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -861,84 +861,88 @@ void upload_done_callback(  	//LLAssetType::EType pref_loc = data->mPreferredLocation;  	BOOL is_balance_sufficient = TRUE; -	if(result >= 0) +	if(data)  	{ -		LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation; - -		if (LLAssetType::AT_SOUND == data->mAssetInfo.mType || -			LLAssetType::AT_TEXTURE == data->mAssetInfo.mType || -			LLAssetType::AT_ANIMATION == data->mAssetInfo.mType) +		if (result >= 0)  		{ -			// Charge the user for the upload. -			LLViewerRegion* region = gAgent.getRegion(); - -			if(!(can_afford_transaction(expected_upload_cost))) -			{ -				LLFloaterBuyCurrency::buyCurrency( -					llformat(LLTrans::getString("UploadingCosts").c_str(), -							 data->mAssetInfo.getName().c_str()), -					         expected_upload_cost); -				is_balance_sufficient = FALSE; -			} -			else if(region) +			LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation; +			 +			if (LLAssetType::AT_SOUND == data->mAssetInfo.mType || +			    LLAssetType::AT_TEXTURE == data->mAssetInfo.mType || +			    LLAssetType::AT_ANIMATION == data->mAssetInfo.mType)  			{ -				// Charge user for upload -				gStatusBar->debitBalance(expected_upload_cost); +				// Charge the user for the upload. +				LLViewerRegion* region = gAgent.getRegion(); -				LLMessageSystem* msg = gMessageSystem; -				msg->newMessageFast(_PREHASH_MoneyTransferRequest); -				msg->nextBlockFast(_PREHASH_AgentData); -				msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); -				msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); -				msg->nextBlockFast(_PREHASH_MoneyData); -				msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID()); -				msg->addUUIDFast(_PREHASH_DestID, LLUUID::null); -				msg->addU8("Flags", 0); -				// we tell the sim how much we were expecting to pay so it -				// can respond to any discrepancy -				msg->addS32Fast(_PREHASH_Amount, expected_upload_cost); -				msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY); -				msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY); -				msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE); -				msg->addStringFast(_PREHASH_Description, NULL); -				msg->sendReliable(region->getHost()); +				if(!(can_afford_transaction(expected_upload_cost))) +				{ +					LLFloaterBuyCurrency::buyCurrency( +									  llformat(LLTrans::getString("UploadingCosts").c_str(), +										   data->mAssetInfo.getName().c_str()), +									  expected_upload_cost); +					is_balance_sufficient = FALSE; +				} +				else if(region) +				{ +					// Charge user for upload +					gStatusBar->debitBalance(expected_upload_cost); +					 +					LLMessageSystem* msg = gMessageSystem; +					msg->newMessageFast(_PREHASH_MoneyTransferRequest); +					msg->nextBlockFast(_PREHASH_AgentData); +					msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); +					msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); +					msg->nextBlockFast(_PREHASH_MoneyData); +					msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID()); +					msg->addUUIDFast(_PREHASH_DestID, LLUUID::null); +					msg->addU8("Flags", 0); +					// we tell the sim how much we were expecting to pay so it +					// can respond to any discrepancy +					msg->addS32Fast(_PREHASH_Amount, expected_upload_cost); +					msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY); +					msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY); +					msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE); +					msg->addStringFast(_PREHASH_Description, NULL); +					msg->sendReliable(region->getHost()); +				}  			} -		} -		if(is_balance_sufficient) -		{ -			// Actually add the upload to inventory -			llinfos << "Adding " << uuid << " to inventory." << llendl; -			const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc); -			if(folder_id.notNull()) +			if(is_balance_sufficient)  			{ -				U32 next_owner_perms = data->mNextOwnerPerm; -				if(PERM_NONE == next_owner_perms) +				// Actually add the upload to inventory +				llinfos << "Adding " << uuid << " to inventory." << llendl; +				const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc); +				if(folder_id.notNull())  				{ -					next_owner_perms = PERM_MOVE | PERM_TRANSFER; +					U32 next_owner_perms = data->mNextOwnerPerm; +					if(PERM_NONE == next_owner_perms) +					{ +						next_owner_perms = PERM_MOVE | PERM_TRANSFER; +					} +					create_inventory_item(gAgent.getID(), gAgent.getSessionID(), +							      folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(), +							      data->mAssetInfo.getDescription(), data->mAssetInfo.mType, +							      data->mInventoryType, NOT_WEARABLE, next_owner_perms, +							      LLPointer<LLInventoryCallback>(NULL)); +				} +				else +				{ +					llwarns << "Can't find a folder to put it in" << llendl;  				} -				create_inventory_item(gAgent.getID(), gAgent.getSessionID(), -					folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(), -					data->mAssetInfo.getDescription(), data->mAssetInfo.mType, -					data->mInventoryType, NOT_WEARABLE, next_owner_perms, -					LLPointer<LLInventoryCallback>(NULL)); -			} -			else -			{ -				llwarns << "Can't find a folder to put it in" << llendl;  			}  		} -	} -	else // 	if(result >= 0) -	{ -		LLSD args; -		args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType); -		args["REASON"] = std::string(LLAssetStorage::getErrorString(result)); -		LLNotificationsUtil::add("CannotUploadReason", args); +		else // 	if(result >= 0) +		{ +			LLSD args; +			args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType); +			args["REASON"] = std::string(LLAssetStorage::getErrorString(result)); +			LLNotificationsUtil::add("CannotUploadReason", args); +		}  	}  	LLUploadDialog::modalUploadFinished();  	delete data; +	data = NULL;  	// *NOTE: This is a pretty big hack. What this does is check the  	// file picker if there are any more pending uploads. If so, diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index cf0808ea5b..698b6be98b 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1492,9 +1492,9 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)  	//-------------------------------------------------------------------------  	// parse the file  	//------------------------------------------------------------------------- -	BOOL success = sSkeletonXMLTree.parseFile( filename, FALSE ); +	BOOL parsesuccess = sSkeletonXMLTree.parseFile( filename, FALSE ); -	if (!success) +	if (!parsesuccess)  	{  		llerrs << "Can't parse skeleton file: " << filename << llendl;  		return FALSE; @@ -1505,11 +1505,13 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)  	if (!root)   	{  		llerrs << "No root node found in avatar skeleton file: " << filename << llendl; +		return FALSE;  	}  	if( !root->hasName( "linden_skeleton" ) )  	{  		llerrs << "Invalid avatar skeleton file header: " << filename << llendl; +		return FALSE;  	}  	std::string version; @@ -1517,6 +1519,7 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)  	if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )  	{  		llerrs << "Invalid avatar skeleton file version: " << version << " in file: " << filename << llendl; +		return FALSE;  	}  	return TRUE; @@ -2192,13 +2195,16 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)  	// store off last frame's root position to be consistent with camera position  	LLVector3 root_pos_last = mRoot.getWorldPosition();  	BOOL detailed_update = updateCharacter(agent); -	BOOL voice_enabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel();  	if (gNoRender)  	{  		return TRUE;  	} +	static LLUICachedControl<bool> visualizers_in_calls("ShowVoiceVisualizersInCalls", false); +	bool voice_enabled = (visualizers_in_calls || gVoiceClient->inProximalChannel()) && +						 gVoiceClient->getVoiceEnabled(mID); +  	idleUpdateVoiceVisualizer( voice_enabled );  	idleUpdateMisc( detailed_update );  	idleUpdateAppearanceAnimation(); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index a904953e96..f90f8f1b89 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1371,6 +1371,7 @@ void LLPipeline::updateMoveNormalAsync(LLDrawable* drawablep)  	if (!drawablep)  	{  		llerrs << "updateMove called with NULL drawablep" << llendl; +		return;  	}  	if (drawablep->isState(LLDrawable::EARLY_MOVE))  	{ diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index 5f46ad7860..1f16aea2ef 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -159,6 +159,7 @@ Maximum 200 per group daily           left_pad="3"           max_length="511"           name="create_message" +         text_type="ascii"           top_delta="0"           width="220"           word_wrap="true" /> diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 887a89d518..9ef3649d9c 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -24,6 +24,7 @@ bg_opaque_color="DkGray2"    layout="topleft"    left="6"    name="picks_panel_text" +  wrap="true"    top="10"    width="313"/>   <accordion diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 274ed178b2..07344c7a24 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2130,7 +2130,7 @@ this texture in your inventory  	<string name="ClassifiedUpdateAfterPublish">(will update after publish)</string>    <!-- panel picks --> -  <string name="NoPicksClassifiedsText">There are no picks/classifieds here</string> +  <string name="NoPicksClassifiedsText">You haven't created any Picks or Classifieds. Click the Plus button below to create a Pick or Classified.</string>    <string name="PicksClassifiedsLoadingText">Loading...</string>  	<!-- Multi Preview Floater --> | 
