diff options
| author | andreykproductengine <andreykproductengine@lindenlab.com> | 2017-12-06 19:40:58 +0200 | 
|---|---|---|
| committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2017-12-06 19:40:58 +0200 | 
| commit | 6fe00fd9adb967ff4da8b1ee53030a7f2e0ff052 (patch) | |
| tree | 96f4e94d25f7ef0dba8a4f8b787d068159fdc949 | |
| parent | bc179e3b269aca63ad1c856d305e26969836e774 (diff) | |
MAINT-8058 Fixed background requests on every prim edit
| -rw-r--r-- | indra/newview/llfloatermediasettings.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llfloatertools.cpp | 49 | ||||
| -rw-r--r-- | indra/newview/llfloatertools.h | 4 | ||||
| -rw-r--r-- | indra/newview/llpanelmediasettingsgeneral.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llpanelmediasettingsgeneral.h | 2 | 
5 files changed, 47 insertions, 23 deletions
| diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp index 4fd5c0587a..2afd889609 100644 --- a/indra/newview/llfloatermediasettings.cpp +++ b/indra/newview/llfloatermediasettings.cpp @@ -171,8 +171,12 @@ void LLFloaterMediaSettings::onClose(bool app_quitting)  void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editable )  {  	if (sInstance->hasFocus()) return; -	 -	sInstance->clearValues(editable); + +	// Clear values +	sInstance->mPanelMediaSettingsGeneral->clearValues(sInstance->mPanelMediaSettingsGeneral, editable, false /*don't update preview*/); +	sInstance->mPanelMediaSettingsSecurity->clearValues(sInstance->mPanelMediaSettingsSecurity,	editable); +	sInstance->mPanelMediaSettingsPermissions->clearValues(sInstance->mPanelMediaSettingsPermissions,  editable); +  	// update all panels with values from simulator  	sInstance->mPanelMediaSettingsGeneral->  		initValues( sInstance->mPanelMediaSettingsGeneral, media_settings, editable ); diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 2869256d09..9c3f0922b8 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -1317,7 +1317,6 @@ void LLFloaterTools::getMediaState()  	std::string multi_media_info_str = LLTrans::getString("Multiple Media");  	std::string media_title = ""; -	mNeedMediaTitle = false;  	// update UI depending on whether "object" (prim or face) has media  	// and whether or not you are allowed to edit it. @@ -1335,17 +1334,18 @@ void LLFloaterTools::getMediaState()  			{  				// initial media title is the media URL (until we get the name)  				media_title = media_data_get.getHomeURL(); - -				// kick off a navigate and flag that we need to update the title -				navigateToTitleMedia( media_data_get.getHomeURL() ); -				mNeedMediaTitle = true; +				navigateToTitleMedia(media_title); +			} +			else +			{ +				// all faces might be empty. Make sure we will navigate next time. +				navigateToTitleMedia(std::string());  			} -			// else all faces might be empty.   		}  		else // there' re Different Medias' been set on on the faces.  		{  			media_title = multi_media_info_str; -			mNeedMediaTitle = false; +			navigateToTitleMedia(media_title);  		}  		getChildView("media_tex")->setEnabled(bool_has_media && editable); @@ -1362,7 +1362,7 @@ void LLFloaterTools::getMediaState()  		if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia)  		{  			media_title = multi_media_info_str; -			mNeedMediaTitle = false; +			navigateToTitleMedia(media_title);  		}  		else  		{ @@ -1371,10 +1371,12 @@ void LLFloaterTools::getMediaState()  			{  				// initial media title is the media URL (until we get the name)  				media_title = media_data_get.getHomeURL(); - -				// kick off a navigate and flag that we need to update the title -				navigateToTitleMedia( media_data_get.getHomeURL() ); -				mNeedMediaTitle = true; +				navigateToTitleMedia(media_title); +			} +			else +			{ +				// Make sure we will navigate next time. +				navigateToTitleMedia(std::string());  			}  		} @@ -1472,16 +1474,31 @@ void LLFloaterTools::clearMediaSettings()  //  void LLFloaterTools::navigateToTitleMedia( const std::string url )  { -	if ( mTitleMedia ) +	std::string multi_media_info_str = LLTrans::getString("Multiple Media"); +	if (url.empty() || multi_media_info_str == url) +	{ +		// nothing to show +		mNeedMediaTitle = false; +	} +	else if (mTitleMedia)  	{  		LLPluginClassMedia* media_plugin = mTitleMedia->getMediaPlugin(); -		if ( media_plugin ) + +		if ( media_plugin ) // Shouldn't this be after navigateTo creates plugin?  		{  			// if it's a movie, we don't want to hear it  			media_plugin->setVolume( 0 );  		}; -		mTitleMedia->navigateTo( url ); -	}; + +		// check if url changed or if we need a new media source +		if (mTitleMedia->getCurrentNavUrl() != url || media_plugin == NULL) +		{ +			mTitleMedia->navigateTo( url ); +		} + +		// flag that we need to update the title (even if no request were made) +		mNeedMediaTitle = true; +	}  }  ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 8f586f7da6..ffff564ad4 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -102,8 +102,6 @@ public:  	void onClickBtnAddMedia();  	void onClickBtnEditMedia();  	void clearMediaSettings(); -	void updateMediaTitle(); -	void navigateToTitleMedia( const std::string url );  	bool selectedMediaEditable();  	void updateLandImpacts(); @@ -116,6 +114,8 @@ private:  	void refreshMedia();  	void getMediaState();  	void updateMediaSettings(); +	void navigateToTitleMedia( const std::string url ); // navigate if changed +	void updateMediaTitle();  	static bool deleteMediaConfirm(const LLSD& notification, const LLSD& response);  	static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);  	static void setObjectType( LLPCode pcode ); diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp index d7c43c224c..3522189842 100644 --- a/indra/newview/llpanelmediasettingsgeneral.cpp +++ b/indra/newview/llpanelmediasettingsgeneral.cpp @@ -196,7 +196,7 @@ void LLPanelMediaSettingsGeneral::draw()  ////////////////////////////////////////////////////////////////////////////////  // static  -void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable) +void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable, bool update_preview)  {	  	LLPanelMediaSettingsGeneral *self =(LLPanelMediaSettingsGeneral *)userdata;  	self->mAutoLoop->clear(); @@ -217,7 +217,10 @@ void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable)  	self->mHeightPixels ->setEnabled(editable);  	self->mHomeURL ->setEnabled(editable);  	self->mWidthPixels ->setEnabled(editable); -	self->updateMediaPreview(); +	if (update_preview) +	{ +		self->updateMediaPreview(); +	}  }  // static diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h index 0ae1401ab2..06793d91fc 100644 --- a/indra/newview/llpanelmediasettingsgeneral.h +++ b/indra/newview/llpanelmediasettingsgeneral.h @@ -59,7 +59,7 @@ public:  	void setParent( LLFloaterMediaSettings* parent );  	static void initValues( void* userdata, const LLSD& media_settings ,bool editable); -	static void clearValues( void* userdata, bool editable); +	static void clearValues( void* userdata, bool editable, bool update_preview = true);  	// Navigates the current selected face to the Home URL.  	// If 'only_if_current_is_empty' is "true", it only performs | 
