diff options
Diffstat (limited to 'indra')
45 files changed, 277 insertions, 205 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index f56cb2eee7..c3dd4ae647 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -127,6 +127,10 @@ void LLDockableFloater::setVisible(BOOL visible)  		mDockControl.get()->repositionDockable();  	} +	if (visible) +	{ +		LLFloater::setFrontmost(TRUE); +	}  	LLFloater::setVisible(visible);  } diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 70d78c77cd..c376a73615 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -139,6 +139,7 @@ public:  	// TODO: add optional style parameter  	virtual void			setText(const LLStringExplicit &utf8str , const LLStyle::Params& input_params = LLStyle::Params()); // uses default style  	virtual std::string		getText() const; +	void					setMaxTextLength(S32 length) { mMaxTextByteLength = length; }  	// wide-char versions  	void					setWText(const LLWString& text); diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp index dac0509531..236f79978d 100644 --- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp +++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp @@ -531,13 +531,13 @@ private:  		// this wasn't required in 1.xx viewer but we have to manually   		// work the Windows message pump now  		#if defined( LL_WINDOWS ) -		MSG msg;
 -		while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) 
 -		{
 -			GetMessage( &msg, NULL, 0, 0 );
 -			TranslateMessage( &msg );
 -			DispatchMessage( &msg );
 -		};
 +		MSG msg; +		while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )  +		{ +			GetMessage( &msg, NULL, 0, 0 ); +			TranslateMessage( &msg ); +			DispatchMessage( &msg ); +		};  		#endif  		MCIdle( mMovieController ); @@ -718,18 +718,24 @@ private:  		// find the size of the title  		ByteCount size;  		result = QTMetaDataGetItemValue( media_data_ref, item, NULL, 0, &size ); -		if ( noErr != result || size <= 0 )  +		if ( noErr != result || size <= 0 /*|| size > 1024  FIXME: arbitrary limit */ )   			return false;  		// allocate some space and grab it -		UInt8* item_data = new UInt8( size ); -		memset( item_data, 0, size * sizeof( UInt8* ) ); +		UInt8* item_data = new UInt8( size + 1 ); +		memset( item_data, 0, ( size + 1 ) * sizeof( UInt8* ) );  		result = QTMetaDataGetItemValue( media_data_ref, item, item_data, size, NULL );  		if ( noErr != result )  +		{ +			delete [] item_data;  			return false; +		};  		// save it -		mMovieTitle = std::string( (char* )item_data ); +		if ( strlen( (char*)item_data ) ) +			mMovieTitle = std::string( (char* )item_data ); +		else +			mMovieTitle = "";  		// clean up  		delete [] item_data; diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 1e79720f43..09348782a4 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -296,7 +296,7 @@ private:  	// virtual  	void onNavigateBegin(const EventType& event)  	{ -		if(mInitState > INIT_STATE_NAVIGATE_COMPLETE) +		if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE)  		{  			LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin");  			message.setValue("uri", event.getEventUri()); @@ -304,7 +304,8 @@ private:  			setStatus(STATUS_LOADING);  		} -		else if(mInitState == INIT_STATE_NAVIGATE_COMPLETE) + +		if(mInitState == INIT_STATE_NAVIGATE_COMPLETE)  		{  			mInitState = INIT_STATE_WAIT_REDRAW;  		} @@ -315,7 +316,7 @@ private:  	// virtual  	void onNavigateComplete(const EventType& event)  	{ -		if(mInitState > INIT_STATE_NAVIGATE_COMPLETE) +		if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE)  		{  			LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete");  			message.setValue("uri", event.getEventUri()); @@ -338,7 +339,7 @@ private:  	// virtual  	void onUpdateProgress(const EventType& event)  	{ -		if(mInitState > INIT_STATE_NAVIGATE_COMPLETE) +		if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE)  		{  			LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "progress");  			message.setValueS32("percent", event.getIntValue()); @@ -350,7 +351,7 @@ private:  	// virtual  	void onStatusTextChange(const EventType& event)  	{ -		if(mInitState > INIT_STATE_NAVIGATE_COMPLETE) +		if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE)  		{  			LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "status_text");  			message.setValue("status", event.getStringValue()); @@ -362,7 +363,7 @@ private:  	// virtual  	void onTitleChange(const EventType& event)  	{ -		if(mInitState > INIT_STATE_NAVIGATE_COMPLETE) +		if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE)  		{  			LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text");  			message.setValue("name", event.getStringValue()); @@ -374,7 +375,7 @@ private:  	// virtual  	void onLocationChange(const EventType& event)  	{ -		if(mInitState > INIT_STATE_NAVIGATE_COMPLETE) +		if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE)  		{  			LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "location_changed");  			message.setValue("uri", event.getEventUri()); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 48ba71f446..94a2ca16f4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4545,6 +4545,17 @@      <key>Value</key>      <integer>1</integer>    </map> +  <key>MediaPerformanceManagerDebug</key> +  <map> +    <key>Comment</key> +    <string>Whether to show debug data for the media performance manager in the nearby media list.</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer> +  </map>    <key>MemoryLogFrequency</key>          <map>          <key>Comment</key> @@ -6304,7 +6315,7 @@      <real>1.0</real>    </map> -  <key>RenderHighlightEnable</key> +  <key>RenderHoverGlowEnable</key>    <map>      <key>Comment</key>      <string>Show glow effect when hovering on interactive objects.</string> @@ -6313,7 +6324,7 @@      <key>Type</key>      <string>Boolean</string>      <key>Value</key> -    <integer>1</integer> +    <integer>0</integer>    </map>    <key>RenderHighlightFadeTime</key> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index ca1688ad1f..1257cf9789 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -107,6 +107,7 @@  #include "llnavigationbar.h" //to show/hide navigation bar when changing mouse look state  #include "llagentui.h" +#include "llchannelmanager.h"  using namespace LLVOAvatarDefines; @@ -2166,6 +2167,7 @@ void LLAgent::setBusy()  	{  		gBusyMenu->setLabel(LLTrans::getString("AvatarSetNotBusy"));  	} +	LLNotificationsUI::LLChannelManager::getInstance()->muteAllChannels(true);  }  //----------------------------------------------------------------------------- @@ -2179,6 +2181,7 @@ void LLAgent::clearBusy()  	{  		gBusyMenu->setLabel(LLTrans::getString("AvatarSetBusy"));  	} +	LLNotificationsUI::LLChannelManager::getInstance()->muteAllChannels(false);  }  //----------------------------------------------------------------------------- diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 845a264327..f82d178089 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -89,6 +89,8 @@  #include "llvfsthread.h"  #include "llvolumemgr.h" +#include "llnotificationmanager.h" +  // Third party library includes  #include <boost/bind.hpp> @@ -2340,6 +2342,8 @@ bool LLAppViewer::initWindow()  		gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"),  		gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"),  		FALSE, ignorePixelDepth); + +	LLNotificationsUI::LLNotificationManager::getInstance();  	if (gSavedSettings.getBOOL("WindowFullScreen"))  	{ diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index fd711b72b0..958dbf226a 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -317,11 +317,6 @@ BOOL LLBottomTray::postBuild()  	// Registering Chat Bar to receive Voice client status change notifications.  	gVoiceClient->addObserver(this); -	if (mChicletPanel && mToolbarStack && mNearbyChatBar) -	{ -		verifyChildControlsSizes(); -	} -  	return TRUE;  } @@ -340,35 +335,6 @@ void LLBottomTray::log(LLView* panel, const std::string& descr)  		;   } -void LLBottomTray::verifyChildControlsSizes() -{ -	LLRect rect = mChicletPanel->getRect(); -	/* -	if (rect.getWidth() < mChicletPanel->getMinWidth()) -	{ -		llwarns << "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ: chiclet panel less then min" << llendl; -		mChicletPanel->reshape(mChicletPanel->getMinWidth(), rect.getHeight()); -	} -*/ -	rect = mNearbyChatBar->getRect(); -/* -	if (rect.getWidth() < mNearbyChatBar->getMinWidth()) -	{ -		llwarns << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel less then min" << llendl; -		mNearbyChatBar->reshape(mNearbyChatBar->getMinWidth(), rect.getHeight()); -	} -	else  -*/ -		if (rect.getWidth() > mNearbyChatBar->getMaxWidth()) -	{ -		llerrs << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel more then max width" << llendl; - -		rect.setLeftTopAndSize(rect.mLeft, rect.mTop, mNearbyChatBar->getMaxWidth(), rect.getHeight()); -		mNearbyChatBar->reshape(mNearbyChatBar->getMaxWidth(), rect.getHeight()); -		mNearbyChatBar->setRect(rect); -	} -} -  void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)  {  	static S32 debug_calling_number = 0; @@ -393,7 +359,6 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)  	if (mChicletPanel && mToolbarStack && mNearbyChatBar)  	{  		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); - 		verifyChildControlsSizes();  		// bottom tray is narrowed  		if (delta_width < 0) diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 974289d5e0..8989816bfe 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -101,8 +101,6 @@ private:  		, RS_RESIZABLE_BUTTONS			= /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES  	}EResizeState; -	void updateResizeState(S32 new_width, S32 cur_width); -	void verifyChildControlsSizes();  	S32 processWidthDecreased(S32 delta_width);  	void processWidthIncreased(S32 delta_width);  	void log(LLView* panel, const std::string& descr); diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index 914435b640..3443d8b593 100644 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -220,5 +220,12 @@ void LLChannelManager::removeChannelByID(const LLUUID id)  }  //-------------------------------------------------------------------------- - +void LLChannelManager::muteAllChannels(bool mute) +{ +	for (std::vector<ChannelElem>::iterator it = mChannelList.begin(); +			it != mChannelList.end(); it++) +	{ +		it->channel->setShowToasts(!mute); +	} +} diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h index b927d369cd..4b66a1ef89 100644 --- a/indra/newview/llchannelmanager.h +++ b/indra/newview/llchannelmanager.h @@ -102,6 +102,13 @@ public:  	// remove channel methods  	void	removeChannelByID(const LLUUID id); +	/** +	 * Manages toasts showing for all channels. +	 * +	 * @param mute Flag to disable/enable toasts showing. +	 */ +	void muteAllChannels(bool mute); +  private:  	LLScreenChannel* createChannel(LLChannelManager::Params& p); diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 9e290c8c04..4078fac4ec 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -797,13 +797,11 @@ LLChicletPanel::Params::Params()  	chiclet_padding = 3;  	scrolling_offset = 40; -/*  	if (!min_width.isProvided())  	{  		// min_width = 4 chiclets + 3 paddings  		min_width = 180 + 3*chiclet_padding;  	} -*/  };  LLChicletPanel::LLChicletPanel(const Params&p) diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp index 20dc4440c2..169a963d0d 100644 --- a/indra/newview/lldebugview.cpp +++ b/indra/newview/lldebugview.cpp @@ -79,7 +79,7 @@ void LLDebugView::init()  	r.set(150 - 25, rect.getHeight() - 50, rect.getWidth()/2 - 25, rect.getHeight() - 450); -	r.set(25, rect.getHeight() - 50, (S32) (gViewerWindow->getWindowRectScaled().getWidth() * 0.75f),  +	r.setLeftTopAndSize(25, rect.getHeight() - 50, (S32) (gViewerWindow->getWindowRectScaled().getWidth() * 0.75f),     									 (S32) (gViewerWindow->getWindowRectScaled().getHeight() * 0.75f));  	mFastTimerView = new LLFastTimerView(r);  	mFastTimerView->setFollowsTop(); @@ -87,7 +87,7 @@ void LLDebugView::init()  	mFastTimerView->setVisible(FALSE);			// start invisible  	addChild(mFastTimerView); -	r.set(25, rect.getHeight() - 50, (S32) (gViewerWindow->getWindowRectScaled().getWidth() * 0.75f),  +	r.setLeftTopAndSize(25, rect.getHeight() - 50, (S32) (gViewerWindow->getWindowRectScaled().getWidth() * 0.75f),   									 (S32) (gViewerWindow->getWindowRectScaled().getHeight() * 0.75f));  	LLMemoryView::Params mp;  	mp.name("memory"); diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 01603f390d..ae5be8cc7c 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -74,6 +74,7 @@ public:  		mName("(Loading...)"),  		mPosX(0),  		mPosY(0), +		mPosZ(0),  		mLoaded(false)   	{} @@ -101,6 +102,14 @@ public:  			requestNameAndPos();  		return mPosY;  	} + +	S32 getPosZ() +	{ +		if (!mLoaded) +			requestNameAndPos(); +		return mPosZ; +	} +  private:  	/**  	 * Requests landmark data from server. @@ -114,14 +123,15 @@ private:  		if(LLLandmarkActions::getLandmarkGlobalPos(mLandmarkID, g_pos))  		{  			LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(g_pos, -				boost::bind(&LLLandmarkInfoGetter::landmarkNameCallback, this, _1, _2, _3)); +				boost::bind(&LLLandmarkInfoGetter::landmarkNameCallback, this, _1, _2, _3, _4));  		}  	} -	void landmarkNameCallback(const std::string& name, S32 x, S32 y) +	void landmarkNameCallback(const std::string& name, S32 x, S32 y, S32 z)  	{  		mPosX = x;  		mPosY = y; +		mPosZ = z;  		mName = name;  		mLoaded = true;  	} @@ -130,6 +140,7 @@ private:  	std::string mName;  	S32 mPosX;  	S32 mPosY; +	S32 mPosZ;  	bool mLoaded;  }; @@ -151,7 +162,8 @@ public:  		if (!region_name.empty())  		{  			LLToolTip::Params params; -			params.message = llformat("%s\n%s (%d, %d)", getLabelSelected().c_str(), region_name.c_str(), mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY()); +			params.message = llformat("%s\n%s (%d, %d, %d)", getLabelSelected().c_str(), region_name.c_str(),  +				mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY(), mLandmarkInfoGetter.getPosZ());  			params.sticky_rect = calcScreenRect();  			LLToolTipMgr::instance().show(params);  		} diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 21458f83cd..4192c6a586 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -909,11 +909,7 @@ void LLFolderView::finishRenamingItem( void )  		mRenameItem->rename( mRenamer->getText() );  	} -	mRenamer->setCommitOnFocusLost( FALSE ); -	mRenamer->setFocus( FALSE ); -	mRenamer->setVisible( FALSE ); -	mRenamer->setCommitOnFocusLost( TRUE ); -	gFocusMgr.setTopCtrl( NULL ); +	gFocusMgr.setTopCtrl( NULL );	  	if( mRenameItem )  	{ diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index 23d9436fa6..ac060cef15 100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp @@ -44,27 +44,24 @@  // Constants; -static const std::string INVENTORY_STRING_FRIENDS_SUBFOLDER = "Friends"; -static const std::string INVENTORY_STRING_FRIENDS_ALL_SUBFOLDER = "All"; +static const std::string INVENTORY_STRING_FRIENDS_SUBFOLDER = "InvFolder Friends"; +static const std::string INVENTORY_STRING_FRIENDS_ALL_SUBFOLDER = "InvFolder All";  // helper functions -/* -mantipov *NOTE: unable to use  -LLTrans::getString("InvFolder Friends"); or -LLTrans::getString("InvFolder FriendsAll"); -in next two functions to set localized folders' names because of there is a hack in the -LLFolderViewItem::refreshFromListener() method for protected asset types. -So, localized names will be got from the strings with "InvFolder LABEL_NAME" in the strings.xml -*/ -inline const std::string& get_friend_folder_name() +// NOTE: Usage of LLTrans::getString(); in next two functions to set localized +// folders' names is caused by a hack in the LLFolderViewItem::refreshFromListener() +// method for protected asset types. +// So, localized names will be got from the strings with "InvFolder LABEL_NAME" +// in the strings.xml +inline const std::string get_friend_folder_name()  { -	return INVENTORY_STRING_FRIENDS_SUBFOLDER; +	return LLTrans::getString(INVENTORY_STRING_FRIENDS_SUBFOLDER);  } -inline const std::string& get_friend_all_subfolder_name() +inline const std::string get_friend_all_subfolder_name()  { -	return INVENTORY_STRING_FRIENDS_ALL_SUBFOLDER; +	return LLTrans::getString(INVENTORY_STRING_FRIENDS_ALL_SUBFOLDER);  }  void move_from_to_arrays(LLInventoryModel::cat_array_t& from, LLInventoryModel::cat_array_t& to) @@ -81,15 +78,20 @@ const LLUUID& get_folder_uuid(const LLUUID& parentFolderUUID, LLInventoryCollect  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; -	gInventory.collectDescendentsIf(parentFolderUUID, cats, items,  +	gInventory.collectDescendentsIf(parentFolderUUID, cats, items,  		LLInventoryModel::EXCLUDE_TRASH, matchFunctor); -	if (cats.count() == 1) +	S32 cats_count = cats.count(); + +	if (cats_count > 1)  	{ -		return cats.get(0)->getUUID(); +		LL_WARNS("LLFriendCardsManager") +			<< "There is more than one Friend card folder." +			<< "The first folder will be used." +			<< LL_ENDL;  	} -	return LLUUID::null; +	return (cats_count >= 1) ? cats.get(0)->getUUID() : LLUUID::null;  }  /** @@ -348,13 +350,8 @@ const LLUUID& LLFriendCardsManager::findFriendAllSubfolderUUIDImpl() const  	return findChildFolderUUID(friendFolderUUID, friendAllSubfolderName);  } -const LLUUID& LLFriendCardsManager::findChildFolderUUID(const LLUUID& parentFolderUUID, const std::string& folderLabel) const +const LLUUID& LLFriendCardsManager::findChildFolderUUID(const LLUUID& parentFolderUUID, const std::string& localizedName) const  { -	// mantipov *HACK: get localaized name in the same way like in the LLFolderViewItem::refreshFromListener() method. -	// be sure these both methods are synchronized. -	// see also get_friend_folder_name() and get_friend_all_subfolder_name() functions -	std::string localizedName = LLTrans::getString("InvFolder " + folderLabel); -  	LLNameCategoryCollector matchFolderFunctor(localizedName);  	return get_folder_uuid(parentFolderUUID, matchFolderFunctor); diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h index 98dc3153d0..b94d5ec2c0 100644 --- a/indra/newview/llfriendcard.h +++ b/indra/newview/llfriendcard.h @@ -120,7 +120,7 @@ private:  		return (mBuddyIDSet.end() != mBuddyIDSet.find(avatarID));  	} -	const LLUUID& findChildFolderUUID(const LLUUID& parentFolderUUID, const std::string& folderLabel) const; +	const LLUUID& findChildFolderUUID(const LLUUID& parentFolderUUID, const std::string& localizedName) const;  	const LLUUID& findFriendFolderUUIDImpl() const;  	const LLUUID& findFriendAllSubfolderUUIDImpl() const;  	const LLUUID& findFriendCardInventoryUUIDImpl(const LLUUID& avatarID); diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index d7eaad94f0..0acc67ff5a 100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp @@ -134,15 +134,17 @@ void LLJoystick::updateSlop()  	return;  } -BOOL LLJoystick::pointInCircle(S32 x, S32 y) const  +bool LLJoystick::pointInCircle(S32 x, S32 y) const   {  -	//cnt is x and y coordinates of center of joystick circle, and also its radius, -	//because area is not just rectangular, it's a square! -	//Make sure to change method if this changes. -	int cnt = this->getLocalRect().mTop/2; -	if((x-cnt)*(x-cnt)+(y-cnt)*(y-cnt)<=cnt*cnt) +	if(this->getLocalRect().mTop!=this->getLocalRect().mRight) +	{ +		llwarns << "Joystick shape is not square"<<llendl;  		return TRUE; -	return FALSE; +	} +	//center is x and y coordinates of center of joystick circle, and also its radius +	int center = this->getLocalRect().mTop/2; +	bool in_circle = (x - center) * (x - center) + (y - center) * (y - center) <= center * center; +	return in_circle;  }  BOOL LLJoystick::handleMouseDown(S32 x, S32 y, MASK mask) @@ -150,7 +152,7 @@ BOOL LLJoystick::handleMouseDown(S32 x, S32 y, MASK mask)  	//llinfos << "joystick mouse down " << x << ", " << y << llendl;  	bool handles = false; -	if(handles = pointInCircle(x, y)) +	if(pointInCircle(x, y))  	{  		mLastMouse.set(x, y);  		mFirstMouse.set(x, y); diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h index 0465f78031..2b071a8999 100644 --- a/indra/newview/lljoystickbutton.h +++ b/indra/newview/lljoystickbutton.h @@ -79,7 +79,13 @@ public:  	static void		onBtnHeldDown(void *userdata);		// called by llbutton callback handler  	void            setInitialQuadrant(EJoystickQuadrant initial) { mInitialQuadrant = initial; }; -	BOOL			pointInCircle(S32 x, S32 y) const; +	/** +	 * Checks if click location is inside joystick circle. +	 * +	 * Image containing circle is square and this square has adherent points with joystick +	 * circle. Make sure to change method according to shape other than square.  +	 */ +	bool			pointInCircle(S32 x, S32 y) const;  	static std::string nameFromQuadrant(const EJoystickQuadrant quadrant);  	static EJoystickQuadrant quadrantFromName(const std::string& name); diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index e0dc1b6f0f..003afafa87 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -324,7 +324,7 @@ void LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(const LLVector3d& gl  	{  		LLVector3 pos = sim_infop->getLocalPos(global_pos);  		std::string name = sim_infop->getName() ; -		cb(name, llround(pos.mV[VX]), llround(pos.mV[VY])); +		cb(name, llround(pos.mV[VX]), llround(pos.mV[VY]),llround(pos.mV[VZ]));  	}  	else  	{ @@ -368,7 +368,7 @@ void LLLandmarkActions::onRegionResponseNameAndCoords(region_name_and_coords_cal  	{  		LLVector3 local_pos = sim_infop->getLocalPos(global_pos);  		std::string name = sim_infop->getName() ; -		cb(name, llround(local_pos.mV[VX]), llround(local_pos.mV[VY])); +		cb(name, llround(local_pos.mV[VX]), llround(local_pos.mV[VY]), llround(local_pos.mV[VZ]));  	}  } diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index 1c524c820c..c65b831f3e 100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h @@ -43,7 +43,7 @@ class LLLandmarkActions  {  public:  	typedef boost::function<void(std::string& slurl)> slurl_callback_t; -	typedef boost::function<void(std::string& slurl, S32 x, S32 y)> region_name_and_coords_callback_t; +	typedef boost::function<void(std::string& slurl, S32 x, S32 y, S32 z)> region_name_and_coords_callback_t;  	/**  	 * @brief Fetches landmark LLViewerInventoryItems for the given landmark name.  diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 8f29f908e5..90c009887d 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -92,6 +92,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :  	mStretchToFill( true ),  	mMaintainAspectRatio ( true ),  	mHideLoading (false), +	mHidingInitialLoad (false),  	mDecoupleTextureSize ( false ),  	mTextureWidth ( 1024 ),  	mTextureHeight ( 1024 ) @@ -616,6 +617,11 @@ bool LLMediaCtrl::ensureMediaSourceExists()  			mMediaSource->setHomeURL(mHomePageUrl);  			mMediaSource->setVisible( getVisible() );  			mMediaSource->addObserver( this ); + +			if(mHideLoading) +			{ +				mHidingInitialLoad = true; +			}  		}  		else  		{ @@ -685,7 +691,13 @@ void LLMediaCtrl::draw()  	{  		setFrequentUpdates( false );  	}; - +	 +	if(mHidingInitialLoad) +	{ +		// If we're hiding loading, don't draw at all. +		return; +	} +	  	// alpha off for this  	LLGLSUIDefault gls_ui;  	LLGLDisable gls_alphaTest( GL_ALPHA_TEST ); @@ -865,19 +877,15 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)  		case MEDIA_EVENT_NAVIGATE_BEGIN:  		{  			LL_DEBUGS("Media") <<  "Media event:  MEDIA_EVENT_NAVIGATE_BEGIN, url is " << self->getNavigateURI() << LL_ENDL; -			if(mMediaSource && mHideLoading) -			{ -				mMediaSource->suspendUpdates(true); -			}  		};  		break;  		case MEDIA_EVENT_NAVIGATE_COMPLETE:  		{  			LL_DEBUGS("Media") <<  "Media event:  MEDIA_EVENT_NAVIGATE_COMPLETE, result string is: " << self->getNavigateResultString() << LL_ENDL; -			if(mMediaSource && mHideLoading) +			if(mHidingInitialLoad)  			{ -				mMediaSource->suspendUpdates(false); +				mHidingInitialLoad = false;  			}  		};  		break; diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 76ddc61ebf..f07513a3fd 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -188,6 +188,7 @@ public:  		bool mStretchToFill;  		bool mMaintainAspectRatio;  		bool mHideLoading; +		bool mHidingInitialLoad;  		bool mDecoupleTextureSize;  		S32 mTextureWidth;  		S32 mTextureHeight; diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 85db69174d..029019a8dc 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -203,5 +203,12 @@ void LLNearbyChat::getAllowedRect(LLRect& rect)  {  	rect = gViewerWindow->getWorldViewRectRaw();  } - +void LLNearbyChat::setMinimized	(BOOL minimize) +{ +	if(minimize && !isDocked()) +	{ +		setVisible(FALSE); +	} +	LLDockableFloater::setMinimized(minimize); +} diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 3303c388af..1f4e57cf89 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -56,6 +56,7 @@ public:  	/*virtual*/ void	onOpen	(const LLSD& key);  	virtual void setRect		(const LLRect &rect); +	virtual void setMinimized	(BOOL minimize);  private:  	virtual void    applySavedVariables(); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 333646d2c5..8fb4ea4211 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -252,19 +252,6 @@ bool LLNearbyChatBar::instanceExists()  void LLNearbyChatBar::draw()  { -// TODO: mantipov: remove -/* -	LLRect rect = getRect(); -	S32 max_width = getMaxWidth(); - -	if (rect.getWidth() > max_width) -	{ -		rect.setLeftTopAndSize(rect.mLeft, rect.mTop, max_width, rect.getHeight()); -		reshape(rect.getWidth(), rect.getHeight(), FALSE); -		setRect(rect); -	} -*/ -  	displaySpeakingIndicator();  	LLPanel::draw();  } diff --git a/indra/newview/llnotificationgrouphandler.cpp b/indra/newview/llnotificationgrouphandler.cpp index fc6fb25644..26730e1f10 100644 --- a/indra/newview/llnotificationgrouphandler.cpp +++ b/indra/newview/llnotificationgrouphandler.cpp @@ -37,6 +37,7 @@  #include "llgroupactions.h"  #include "llviewercontrol.h"  #include "llviewerwindow.h" +#include "llnotificationmanager.h"  using namespace LLNotificationsUI; @@ -47,6 +48,9 @@ LLGroupHandler::LLGroupHandler(e_notification_type type, const LLSD& id)  	// Getting a Channel for our notifications  	mChannel = LLChannelManager::getInstance()->createNotificationChannel(); +	LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel); +	if(channel) +		channel->setOnRejectToastCallback(boost::bind(&LLGroupHandler::onRejectToast, this, _1));  }  //-------------------------------------------------------------------------- @@ -118,5 +122,15 @@ void LLGroupHandler::onDeleteToast(LLToast* toast)  }  //-------------------------------------------------------------------------- +void LLGroupHandler::onRejectToast(LLUUID& id) +{ +	LLNotificationPtr notification = LLNotifications::instance().find(id); + +	if (notification && LLNotificationManager::getInstance()->getHandlerForNotification(notification->getType()) == this) +	{ +		LLNotifications::instance().cancel(notification); +	} +} +//-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 23998a0e5d..42cc7cacc2 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -209,6 +209,9 @@ public:  protected:  	virtual void onDeleteToast(LLToast* toast);  	virtual void initChannel(); + +	// own handlers +	void onRejectToast(LLUUID& id);  };  /** diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 1f5ffb7335..709525d4e2 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -448,6 +448,7 @@ LLPanelPeople::LLPanelPeople()  	mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList,	this));  	mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList,	this));  	mRecentListUpdater = new LLRecentListUpdater(boost::bind(&LLPanelPeople::updateRecentList,	this)); +	mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&LLPanelPeople::onAddFriendButtonClicked, this));  }  LLPanelPeople::~LLPanelPeople() @@ -547,7 +548,6 @@ BOOL LLPanelPeople::postBuild()  		boost::bind(&LLPanelPeople::onFriendsAccordionExpandedCollapsed, this, _2, mOnlineFriendList));  	buttonSetAction("view_profile_btn",	boost::bind(&LLPanelPeople::onViewProfileButtonClicked,	this)); -	buttonSetAction("add_friend_btn",	boost::bind(&LLPanelPeople::onAddFriendButtonClicked,	this));  	buttonSetAction("group_info_btn",	boost::bind(&LLPanelPeople::onGroupInfoButtonClicked,	this));  	buttonSetAction("chat_btn",			boost::bind(&LLPanelPeople::onChatButtonClicked,		this));  	buttonSetAction("im_btn",			boost::bind(&LLPanelPeople::onImButtonClicked,			this)); @@ -707,7 +707,7 @@ void LLPanelPeople::updateButtons()  	bool nearby_tab_active	= (cur_tab == NEARBY_TAB_NAME);  	bool friends_tab_active = (cur_tab == FRIENDS_TAB_NAME);  	bool group_tab_active	= (cur_tab == GROUP_TAB_NAME); -	bool recent_tab_active	= (cur_tab == RECENT_TAB_NAME); +	//bool recent_tab_active	= (cur_tab == RECENT_TAB_NAME);  	LLUUID selected_id;  	std::vector<LLUUID> selected_uuids; @@ -717,7 +717,6 @@ void LLPanelPeople::updateButtons()  	buttonSetVisible("group_info_btn",		group_tab_active);  	buttonSetVisible("chat_btn",			group_tab_active); -	buttonSetVisible("add_friend_btn",		nearby_tab_active || recent_tab_active);  	buttonSetVisible("view_profile_btn",	!group_tab_active);  	buttonSetVisible("im_btn",				!group_tab_active);  	buttonSetVisible("call_btn",			!group_tab_active); @@ -750,7 +749,9 @@ void LLPanelPeople::updateButtons()  			is_friend = LLAvatarTracker::instance().getBuddyInfo(selected_id) != NULL;  		} -		childSetEnabled("add_friend_btn",	!is_friend); +		LLPanel* cur_panel = mTabContainer->getCurrentPanel(); +		if (cur_panel) +			cur_panel->childSetEnabled("add_friend_btn", !is_friend);  	}  	buttonSetEnabled("teleport_btn",		friends_tab_active && item_selected && isFriendOnline(selected_uuids.front())); diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 61501cc1b1..0c7cc9af38 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -542,16 +542,16 @@ void LLPanelPlaceProfile::updateCovenantText(const std::string &text)  void LLPanelPlaceProfile::onForSaleBannerClick()  {  	LLViewerParcelMgr* mgr = LLViewerParcelMgr::getInstance(); -	LLParcelSelectionHandle hParcel = mgr->getFloatingParcelSelection(); +	LLParcel* parcel = mgr->getFloatingParcelSelection()->getParcel();  	LLViewerRegion* selected_region =  mgr->getSelectionRegion(); -	if(!hParcel.isNull() && selected_region) +	if(parcel && selected_region)  	{ -		if(hParcel->getParcel()->getLocalID() == mSelectedParcelID && +		if(parcel->getLocalID() == mSelectedParcelID &&  				mLastSelectedRegionID ==selected_region->getRegionID())  		{ -			if(hParcel->getParcel()->getSalePrice() - gStatusBar->getBalance() > 0) +			if(parcel->getSalePrice() - gStatusBar->getBalance() > 0)  			{ -				LLFloaterBuyCurrency::buyCurrency("Buying selected land ", hParcel->getParcel()->getSalePrice()); +				LLFloaterBuyCurrency::buyCurrency("Buying selected land ", parcel->getSalePrice());  			}  			else  			{ diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 2fb6550107..eada387945 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -90,9 +90,9 @@ BOOL LLSysWellWindow::postBuild()  void LLSysWellWindow::setMinimized(BOOL minimize)  {  	// we don't show empty Message Well window -	if (!minimize) +	if (!minimize && isWindowEmpty())  	{ -		setVisible(!isWindowEmpty()); +		return;  	}  	LLDockableFloater::setMinimized(minimize); @@ -268,8 +268,11 @@ void LLSysWellWindow::toggleWindow()  	{  		setVisible(FALSE);  	} -	//set window in foreground -	setFocus(getVisible()); +	else if(!isDocked()) +	{ +		// bring to front undocked floater +		setVisible(TRUE); +	}  }  //--------------------------------------------------------------------------------- diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 903df21e78..ed2cedbd10 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -225,6 +225,7 @@ void LLToast::setVisible(BOOL show)  		{  			mTimer.start();  		} +		LLModalDialog::setFrontmost(FALSE);  	}  	LLPanel::setVisible(show);  	if(mPanel) diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 0c23947a8c..48b68e4292 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -128,6 +128,7 @@ mAddedDefaultBtn(false)  	// *TODO: magic numbers(???) - copied from llnotify.cpp(250)  	const S32 MAX_LENGTH = 512 + 20 + DB_FIRST_NAME_BUF_SIZE + DB_LAST_NAME_BUF_SIZE + DB_INV_ITEM_NAME_BUF_SIZE;  +	mTextBox->setMaxTextLength(MAX_LENGTH);  	mTextBox->setVisible(TRUE);  	mTextBox->setValue(notification->getMessage()); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index d49ea5109d..9c8fca3552 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -526,7 +526,7 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)  	}  	static LLCachedControl<bool> enable_highlight( -		gSavedSettings, "RenderHighlightEnable", false); +		gSavedSettings, "RenderHoverGlowEnable", false);  	LLDrawable* drawable = NULL;  	if (enable_highlight && show_highlight && object)  	{ diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 70490d3a6e..3a7c54479b 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -32,6 +32,7 @@  #include "llviewerprecompiledheaders.h" +#include "llagent.h"  #include "llviewermedia.h"  #include "llviewermediafocus.h"  #include "llmimetypes.h" @@ -571,6 +572,11 @@ bool LLViewerMedia::priorityComparitor(const LLViewerMediaImpl* i1, const LLView  		// Playable items sort above ones that wouldn't play even if they got high enough priority  		return false;  	} +	else if(i1->getInterest() == i2->getInterest()) +	{ +		// Generally this will mean both objects have zero interest.  In this case, sort on distance. +		return (i1->getProximityDistance() < i2->getProximityDistance()); +	}  	else  	{  		// The object with the larger interest value should be earlier in the list, so we reverse the sense of the comparison here. @@ -578,6 +584,11 @@ bool LLViewerMedia::priorityComparitor(const LLViewerMediaImpl* i1, const LLView  	}  } +static bool proximity_comparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) +{ +	return (i1->getProximityDistance() < i2->getProximityDistance()); +} +  //////////////////////////////////////////////////////////////////////////////////////////  // static  void LLViewerMedia::updateMedia() @@ -603,12 +614,9 @@ void LLViewerMedia::updateMedia()  	int impl_count_total = 0;  	int impl_count_interest_low = 0;  	int impl_count_interest_normal = 0; -	int i = 0; - -#if 0	 -	LL_DEBUGS("PluginPriority") << "Sorted impls:" << llendl; -#endif - +	 +	std::vector<LLViewerMediaImpl*> proximity_order; +	  	U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal");  	U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal");  	U32 max_low = gSavedSettings.getU32("PluginInstancesLow"); @@ -714,23 +722,27 @@ void LLViewerMedia::updateMedia()  		}  		else  		{ -			// Other impls just get the same ordering as the priority list (for now). -			pimpl->mProximity = i; +			proximity_order.push_back(pimpl);  		} -#if 0		 -		LL_DEBUGS("PluginPriority") << "    " << pimpl  -			<< ", setting priority to " << new_priority -			<< (pimpl->hasFocus()?", HAS FOCUS":"")  -			<< (pimpl->getUsedInUI()?", is UI":"")  -			<< ", cpu " << pimpl->getCPUUsage()  -			<< ", interest " << pimpl->getInterest()  -			<< ", media url " << pimpl->getMediaURL() << llendl; -#endif -  		total_cpu += pimpl->getCPUUsage(); -		 -		i++; +	} +	 +	if(gSavedSettings.getBOOL("MediaPerformanceManagerDebug")) +	{ +		// Give impls the same ordering as the priority list +		// they're already in the right order for this. +	} +	else +	{ +		// Use a distance-based sort for proximity values.   +		std::stable_sort(proximity_order.begin(), proximity_order.end(), proximity_comparitor); +	} + +	// Transfer the proximity order to the proximity fields in the objects. +	for(int i = 0; i < (int)proximity_order.size(); i++) +	{ +		proximity_order[i]->mProximity = i;  	}  	LL_DEBUGS("PluginPriority") << "Total reported CPU usage is " << total_cpu << llendl; @@ -782,6 +794,7 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,  	mIsDisabled(false),  	mIsParcelMedia(false),  	mProximity(-1), +	mProximityDistance(0.0f),  	mMimeTypeProbe(NULL),  	mIsUpdated(false)  {  @@ -2109,6 +2122,15 @@ void LLViewerMediaImpl::calculateInterest()  		mInterest = 0.0f;  	} +	// Calculate distance from the avatar, for use in the proximity calculation. +	mProximityDistance = 0.0f; +	if(!mObjectList.empty()) +	{ +		// Just use the first object in the list.  We could go through the list and find the closest object, but this should work well enough. +		LLVector3d global_delta = gAgent.getPositionGlobal() - (*mObjectList.begin())->getPositionGlobal(); +		mProximityDistance = global_delta.magVecSquared();  // use distance-squared because it's cheaper and sorts the same. +	} +	  	if(mNeedsMuteCheck)  	{  		// Check all objects this instance is associated with, and those objects' owners, against the mute list diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index a06079786e..f4afce6c4c 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -270,6 +270,7 @@ public:  	F64 getInterest() const { return mInterest; };  	F64 getApproximateTextureInterest();  	S32 getProximity() const { return mProximity; }; +	F64 getProximityDistance() const { return mProximityDistance; };  	// Mark this object as being used in a UI panel instead of on a prim  	// This will be used as part of the interest sorting algorithm. @@ -339,6 +340,7 @@ public:  	bool mIsDisabled;  	bool mIsParcelMedia;  	S32 mProximity; +	F64 mProximityDistance;  	LLMimeDiscoveryResponder *mMimeTypeProbe;  private: diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 85bc26c9c0..0d29efaedf 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -2121,10 +2121,11 @@ LLImageRaw* LLViewerFetchedTexture::reloadRawImage(S8 discard_level)  	llassert_always(mGLTexturep.notNull()) ;  	llassert_always(discard_level >= 0);  	llassert_always(mComponents > 0); +  	if (mRawImage.notNull())  	{ -		llerrs << "called with existing mRawImage" << llendl; -		mRawImage = NULL; +		//mRawImage is in use by somebody else, do not delete it. +		return NULL ;  	}  	if(mSavedRawDiscardLevel >= 0 && mSavedRawDiscardLevel <= discard_level) diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp index 999701ece1..6340189c93 100644 --- a/indra/newview/llvlcomposition.cpp +++ b/indra/newview/llvlcomposition.cpp @@ -287,17 +287,22 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,  				min_dim /= 2;  			} -			mDetailTextures[i]->reloadRawImage(ddiscard) ; +			BOOL delete_raw = (mDetailTextures[i]->reloadRawImage(ddiscard) != NULL) ;  			if(mDetailTextures[i]->getRawImageLevel() != ddiscard)//raw iamge is not ready, will enter here again later.  			{ -				mDetailTextures[i]->destroyRawImage() ; +				if(delete_raw) +				{ +					mDetailTextures[i]->destroyRawImage() ; +				}  				lldebugs << "cached raw data for terrain detail texture is not ready yet: " << mDetailTextures[i]->getID() << llendl;  				return FALSE;  			}  			mRawImages[i] = mDetailTextures[i]->getRawImage() ; -			mDetailTextures[i]->destroyRawImage() ; - +			if(delete_raw) +			{ +				mDetailTextures[i]->destroyRawImage() ; +			}  			if (mDetailTextures[i]->getWidth(ddiscard) != BASE_SIZE ||  				mDetailTextures[i]->getHeight(ddiscard) != BASE_SIZE ||  				mDetailTextures[i]->getComponents() != 3) diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml index 6c4f10e61e..9d2a811d9f 100644 --- a/indra/newview/skins/default/xui/en/floater_customize.xml +++ b/indra/newview/skins/default/xui/en/floater_customize.xml @@ -3383,6 +3383,16 @@ scratch and wear it.       bottom="536"       follows="right|bottom"       height="20" +     label="Make Outfit" +     label_selected="Make Outfit" +     layout="topleft" +     name="make_outfit_btn" +     right="-216" +     width="100" /> +    <button +     bottom="536" +     follows="right|bottom" +     height="20"       label="Cancel"       label_selected="Cancel"       layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index e98a6d57bb..181994a1bd 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2572,10 +2572,10 @@               name="Hover Glow Objects">
                  <menu_item_check.on_check
                   function="CheckControl"
 -                 parameter="RenderHighlightEnable" />
 +                 parameter="RenderHoverGlowEnable" />
                  <menu_item_check.on_click
                   function="ToggleControl"
 -                 parameter="RenderHighlightEnable" />
 +                 parameter="RenderHoverGlowEnable" />
              </menu_item_check>
          </menu>
 diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index cb5ec15387..a9a02e8fc7 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -27,6 +27,7 @@       border_visible="false"       bottom="600"       follows="all" +	 hide_loading="true"       left="0"       name="login_html"       start_url="" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 9fac7d34f7..a370b450e9 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -107,7 +107,10 @@ background_visible="true"                   name="add_friend_btn"                   top_delta="0"                   tool_tip="Add selected resident to your friends List" -                 width="18" /> +                 width="18"> +               <commit_callback +                  function="People.addFriend" /> +             </button>              </panel>          </panel>          <panel @@ -325,7 +328,10 @@ background_visible="true"                   name="add_friend_btn"                   top_delta="0"                   tool_tip="Add selected resident to your friends List" -                 width="18" /> +                 width="18"> +                <commit_callback +                   function="People.addFriend" /> +              </button>              </panel>          </panel>      </tab_container> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index a6ca73d4b7..6bb937e3c6 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -66,11 +66,7 @@           label="Italiano (Italian) - Beta"           name="Italian"           value="it" /> -        <combo_box.item -         enabled="true" -         label="Magyar (Hungarian) - Beta" -         name="Hungarian" -         value="hu" /> +          <combo_box.item           enabled="true"           label="Nederlands (Dutch) - Beta" @@ -86,36 +82,16 @@           label="Portugués (Portuguese) - Beta"           name="Portugese"           value="pt" /> -        <combo_box.item -         enabled="true" -         label="Русский (Russian) - Beta" -         name="Russian" -         value="ru" /> -        <combo_box.item -         enabled="true" -         label="Türkçe (Turkish) - Beta" -         name="Turkish" -         value="tr" /> -        <combo_box.item -         enabled="true" -         label="Українська (Ukrainian) - Beta" -         name="Ukrainian" -         value="uk" /> -        <combo_box.item -         enabled="true" -         label="中文 (简体) (Chinese) - Beta" -         name="Chinese" -         value="zh" /> + + + +          <combo_box.item           enabled="true"           label="日本語 (Japanese) - Beta"           name="(Japanese)"           value="ja" /> -        <combo_box.item -         enabled="true" -         label="한국어 (Korean) - Beta" -         name="(Korean)" -         value="ko" /> +          <combo_box.item           enabled="true"           label="Test Language" diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 7e5c30a978..64cfdf2704 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -221,10 +221,12 @@ class WindowsManifest(ViewerManifest):      def construct(self):          super(WindowsManifest, self).construct() + +        self.enable_crt_manifest_check() +          # Find secondlife-bin.exe in the 'configuration' dir, then rename it to the result of final_exe.          self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe()) -        self.enable_crt_manifest_check()          # Plugin host application          self.path(os.path.join(os.pardir, diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index d987915bb8..27cb52a507 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -197,7 +197,7 @@ LLMediaPluginTest::LLMediaPluginTest( int app_window, int window_width, int wind  	{  		LLError::initForApplication(".");  		LLError::setDefaultLevel(LLError::LEVEL_INFO); -//		LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG); +		//LLError::setTagLevel("Plugin", LLError::LEVEL_DEBUG);  	}  	// lots of randomness in this app @@ -223,7 +223,6 @@ LLMediaPluginTest::LLMediaPluginTest( int app_window, int window_width, int wind  	resetView();  	// initial media panel -  	const int num_initial_panels = 1;  	for( int i = 0; i < num_initial_panels; ++i )  	{ @@ -1460,6 +1459,9 @@ std::string LLMediaPluginTest::mimeTypeFromUrl( std::string& url )  	if ( url.find( ".txt" ) != std::string::npos )	// Apple Text descriptors  		mime_type = "video/quicktime";  	else +	if ( url.find( ".mp3" ) != std::string::npos )	// Apple Text descriptors +		mime_type = "video/quicktime"; +	else  	if ( url.find( "example://" ) != std::string::npos )	// Example plugin  		mime_type = "example/example";  | 
