diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llappviewer.cpp | 56 | ||||
| -rwxr-xr-x | indra/newview/llfloaterpreference.cpp | 32 | ||||
| -rw-r--r-- | indra/newview/llfloaterpreference.h | 5 | ||||
| -rw-r--r-- | indra/newview/lltexturecache.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 12 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_advanced.xml | 106 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 92 | 
7 files changed, 182 insertions, 125 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 5a3fe2ff45..90f46316e8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3653,11 +3653,25 @@ bool LLAppViewer::initCache()  	// Init the texture cache  	// Allocate 80% of the cache size for textures	 -	const S32 MB = 1024*1024; +	const S32 MB = 1024 * 1024; +	const S64 MIN_CACHE_SIZE = 64 * MB; +	const S64 MAX_CACHE_SIZE = 9984ll * MB; +	const S64 MAX_VFS_SIZE = 1024 * MB; // 1 GB +  	S64 cache_size = (S64)(gSavedSettings.getU32("CacheSize")) * MB; -	const S64 MAX_CACHE_SIZE = 1024*MB; -	cache_size = llmin(cache_size, MAX_CACHE_SIZE); -	S64 texture_cache_size = ((cache_size * 8)/10); +	cache_size = llclamp(cache_size, MIN_CACHE_SIZE, MAX_CACHE_SIZE); + +	S64 texture_cache_size = ((cache_size * 8) / 10); +	S64 vfs_size = cache_size - texture_cache_size; + +	if (vfs_size > MAX_VFS_SIZE) +	{ +		// Give the texture cache more space, since the VFS can't be bigger than 1GB. +		// This happens when the user's CacheSize setting is greater than 5GB. +		vfs_size = MAX_VFS_SIZE; +		texture_cache_size = cache_size - MAX_VFS_SIZE; +	} +  	S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, texture_cache_mismatch);  	texture_cache_size -= extra; @@ -3666,21 +3680,19 @@ bool LLAppViewer::initCache()  	LLSplashScreen::update(LLTrans::getString("StartupInitializingVFS"));  	// Init the VFS -	S64 vfs_size = cache_size - texture_cache_size; -	const S64 MAX_VFS_SIZE = 1024 * MB; // 1 GB -	vfs_size = llmin(vfs_size, MAX_VFS_SIZE); +	vfs_size = llmin(vfs_size + extra, MAX_VFS_SIZE);  	vfs_size = (vfs_size / MB) * MB; // make sure it is MB aligned  	U32 vfs_size_u32 = (U32)vfs_size;  	U32 old_vfs_size = gSavedSettings.getU32("VFSOldSize") * MB;  	bool resize_vfs = (vfs_size_u32 != old_vfs_size);  	if (resize_vfs)  	{ -		gSavedSettings.setU32("VFSOldSize", vfs_size_u32/MB); +		gSavedSettings.setU32("VFSOldSize", vfs_size_u32 / MB);  	} -	LL_INFOS("AppCache") << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << LL_ENDL; +	LL_INFOS("AppCache") << "VFS CACHE SIZE: " << vfs_size / (1024*1024) << " MB" << LL_ENDL;  	// This has to happen BEFORE starting the vfs -	//time_t	ltime; +	// time_t	ltime;  	srand(time(NULL));		// Flawfinder: ignore  	U32 old_salt = gSavedSettings.getU32("VFSSalt");  	U32 new_salt; @@ -3701,10 +3713,10 @@ bool LLAppViewer::initCache()  		do  		{  			new_salt = rand(); -		} while( new_salt == old_salt ); +		} while(new_salt == old_salt);  	} -	old_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_DATA_FILE_BASE) + llformat("%u",old_salt); +	old_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_DATA_FILE_BASE) + llformat("%u", old_salt);  	// make sure this file exists  	llstat s; @@ -3718,7 +3730,7 @@ bool LLAppViewer::initCache()  		mask += "*";  		std::string dir; -		dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""); +		dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");  		std::string found_file;  		LLDirIterator iter(dir, mask); @@ -3735,7 +3747,7 @@ bool LLAppViewer::initCache()  		}  	} -	old_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_INDEX_FILE_BASE) + llformat("%u",old_salt); +	old_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE) + llformat("%u", old_salt);  	stat_result = LLFile::stat(old_vfs_index_file, &s);  	if (stat_result) @@ -3748,7 +3760,7 @@ bool LLAppViewer::initCache()  		// Just in case, nuke any other old cache files in the directory.  		std::string dir; -		dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""); +		dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");  		std::string mask;  		mask = VFS_DATA_FILE_BASE; @@ -3762,11 +3774,11 @@ bool LLAppViewer::initCache()  		gDirUtilp->deleteFilesInDir(dir, mask);  	} -	new_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_DATA_FILE_BASE) + llformat("%u",new_salt); -	new_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE) + llformat("%u",new_salt); +	new_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_DATA_FILE_BASE) + llformat("%u", new_salt); +	new_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE) + llformat("%u", new_salt); -	static_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"static_data.db2"); -	static_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"static_index.db2"); +	static_vfs_data_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "static_data.db2"); +	static_vfs_index_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "static_index.db2");  	if (resize_vfs)  	{ @@ -3789,19 +3801,19 @@ bool LLAppViewer::initCache()  	// Don't remove VFS after viewer crashes.  If user has corrupt data, they can reinstall. JC  	gVFS = LLVFS::createLLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false); -	if( !gVFS ) +	if (!gVFS)  	{  		return false;  	}  	gStaticVFS = LLVFS::createLLVFS(static_vfs_index_file, static_vfs_data_file, true, 0, false); -	if( !gStaticVFS ) +	if (!gStaticVFS)  	{  		return false;  	}  	BOOL success = gVFS->isValid() && gStaticVFS->isValid(); -	if( !success ) +	if (!success)  	{  		return false;  	} diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 4b15695cbf..60a2f813aa 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -187,12 +187,26 @@ void LLVoiceSetKeyDialog::onCancel(void* user_data)  void handleNameTagOptionChanged(const LLSD& newvalue);	  void handleDisplayNamesOptionChanged(const LLSD& newvalue);	  bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response); +bool callback_clear_cache(const LLSD& notification, const LLSD& response);  //bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);  //bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);  void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); +bool callback_clear_cache(const LLSD& notification, const LLSD& response) +{ +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); +	if ( option == 0 ) // YES +	{ +		// flag client texture cache for clearing next time the client runs +		gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE); +		LLNotificationsUtil::add("CacheWillClear"); +	} + +	return false; +} +  bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response)  {  	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); @@ -305,7 +319,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)  	mCommitCallbackRegistrar.add("Pref.Cancel",				boost::bind(&LLFloaterPreference::onBtnCancel, this));  	mCommitCallbackRegistrar.add("Pref.OK",					boost::bind(&LLFloaterPreference::onBtnOK, this)); -//	mCommitCallbackRegistrar.add("Pref.ClearCache",				boost::bind(&LLFloaterPreference::onClickClearCache, this)); +	mCommitCallbackRegistrar.add("Pref.ClearCache",				boost::bind(&LLFloaterPreference::onClickClearCache, this));  	mCommitCallbackRegistrar.add("Pref.WebClearCache",			boost::bind(&LLFloaterPreference::onClickBrowserClearCache, this));  	mCommitCallbackRegistrar.add("Pref.SetCache",				boost::bind(&LLFloaterPreference::onClickSetCache, this));  	mCommitCallbackRegistrar.add("Pref.ResetCache",				boost::bind(&LLFloaterPreference::onClickResetCache, this)); @@ -809,6 +823,11 @@ void LLFloaterPreference::refreshEnabledGraphics()  	}  } +void LLFloaterPreference::onClickClearCache() +{ +	LLNotificationsUtil::add("ConfirmClearCache", LLSD(), LLSD(), callback_clear_cache); +} +  void LLFloaterPreference::onClickBrowserClearCache()  {  	LLNotificationsUtil::add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache); @@ -868,14 +887,15 @@ void LLFloaterPreference::onClickSetCache()  void LLFloaterPreference::onClickResetCache()  { -	if (!gSavedSettings.getString("CacheLocation").empty()) +	if (gDirUtilp->getCacheDir(false) == gDirUtilp->getCacheDir(true))  	{ -		gSavedSettings.setString("NewCacheLocation", ""); -		gSavedSettings.setString("NewCacheLocationTopFolder", ""); +		// The cache location was already the default. +		return;  	} -	 +	gSavedSettings.setString("NewCacheLocation", ""); +	gSavedSettings.setString("NewCacheLocationTopFolder", "");  	LLNotificationsUtil::add("CacheWillBeMoved"); -	std::string cache_location = gDirUtilp->getCacheDir(true); +	std::string cache_location = gDirUtilp->getCacheDir(false);  	gSavedSettings.setString("CacheLocation", cache_location);  	std::string top_folder(gDirUtilp->getBaseFileName(cache_location));  	gSavedSettings.setString("CacheLocationTopFolder", top_folder); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 5fe509fb37..ef92575347 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -88,7 +88,8 @@ protected:  	void		onBtnCancel();  	void		onBtnApply(); -	void		onClickBrowserClearCache(); +	void		onClickClearCache();			// Clear viewer texture cache, vfs, and VO cache on next startup +	void		onClickBrowserClearCache();		// Clear web history and caches as well as viewer caches above  	void		onLanguageChange();  	void		onNameTagOpacityChange(const LLSD& newvalue); @@ -99,7 +100,7 @@ protected:  	void onChangeCustom();  	void updateMeterText(LLUICtrl* ctrl);  	void onOpenHardwareSettings(); -	/// callback for defaults +	// callback for defaults  	void setHardwareDefaults();  	// callback for when client turns on shaders  	void onVertexShaderEnable(); diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index faab6ac002..9b417307fd 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -949,7 +949,7 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL texture_cache  	max_size -= sCacheMaxTexturesSize;  	LL_INFOS("TextureCache") << "Headers: " << sCacheMaxEntries -			<< " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << LL_ENDL; +			<< " Textures size: " << sCacheMaxTexturesSize / (1024 * 1024) << " MB" << LL_ENDL;  	setDirNames(location); @@ -1655,7 +1655,7 @@ void LLTextureCache::purgeTextures(bool validate)  	LL_INFOS("TextureCache") << "TEXTURE CACHE:"  			<< " PURGED: " << purge_count  			<< " ENTRIES: " << num_entries -			<< " CACHE SIZE: " << mTexturesSizeTotal / 1024*1024 << " MB" +			<< " CACHE SIZE: " << mTexturesSizeTotal / (1024 * 1024) << " MB"  			<< llendl;  } diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 5e7bd605d2..ce96c488b4 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4763,6 +4763,18 @@ Are you sure you want to delete your travel, web, and search history?       notext="Cancel"       yestext="OK"/>    </notification> +   +  <notification +   icon="alertmodal.tga" +   name="ConfirmClearCache" +   type="alertmodal"> +Are you sure you want to clear your viewer cache? +    <tag>confirm</tag> +    <usetemplate +     name="okcancelbuttons" +     notext="Cancel" +     yestext="OK"/> +  </notification>    <notification     icon="alertmodal.tga" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 37aab059a9..2cc9d9c1b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -20,8 +20,112 @@     height="12"     layout="topleft"     left="33" +   name="Cache:" +   top_pad="10" +   width="100"> +    Cache: +  </text> +  <spinner +   control_name="CacheSize" +   decimal_digits="0" +   follows="left|top" +   height="23" +   increment="64" +   initial_value="1024" +   label="Cache size (64 - 9984MB)" +   label_width="150" +   layout="topleft" +   left="80" +   max_val="9984" +   min_val="64" +   top_pad="10" +   name="cachesizespinner" +   width="200" /> +  <text +   type="string" +   length="1" +   follows="left|top" +   height="23" +   layout="topleft" +   left_pad="5" +   mouse_opaque="false" +   name="text_box5" +   width="20"> +    MB +  </text> +  <button +   follows="left|top" +   height="23" +   label="Clear Cache" +   label_selected="Clear Cache" +   layout="topleft" +   left_pad="30" +   name="clear_cache" +   top_delta="0" +   width="100"> +  <button.commit_callback +   function="Pref.ClearCache" /> +  </button> +  <text +   type="string" +   length="1" +   follows="left|top" +   height="10" +   layout="topleft" +   left="80" +   name="Cache location" +   top_pad="5" +   width="300"> +    Cache location: +  </text> +  <line_editor +   control_name="CacheLocationTopFolder" +   border_style="line" +   border_thickness="1" +   follows="left|top" +   font="SansSerif" +   height="23" +   layout="topleft" +   left="80" +   max_length="4096" +   name="cache_location" +   top_pad="5" +   width="205" /> +  <button +   follows="left|top" +   height="23" +   label="Browse" +   label_selected="Browse" +   layout="topleft" +   left_pad="5" +   name="set_cache" +   top_delta="0" +   width="100"> +  <button.commit_callback +   function="Pref.SetCache" /> +  </button> +  <button +    follows="left|top" +    height="23" +    label="Default Location" +    label_selected="Default Location" +    layout="topleft" +    left_pad="3" +    name="default_cache_location" +    top_delta="0" +    width="100"> +    <button.commit_callback +     function="Pref.ResetCache" /> +  </button> +   <text +   type="string" +   length="1" +   follows="left|top" +   height="12" +   layout="topleft" +   left="33"     name="UI Size:" -   top_pad="25" +   top_pad="20"     width="100">      UI size:    </text> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 901a1257e0..1c22a5c02e 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -93,98 +93,6 @@     name="connection_port"     top_delta="3"     width="170" /> -  <text -   type="string" -   length="1" -   follows="left|top" -   height="10" -   layout="topleft" -   left="80" -   mouse_opaque="false" -   name="cache_size_label_l" -   top_pad="20" -   width="200"> -    Cache size -  </text> -  <slider -   can_edit_text="true" -   control_name="CacheSize" -   decimal_digits="0" -   follows="left|top" -   height="15" -   increment="16" -   initial_value="512" -   layout="topleft" -   left_delta="150" -   max_val="1024" -   min_val="32" -   name="cache_size" -   top_delta="-2" -   width="180" /> -  <text -   type="string" -   length="1" -   follows="left|top" -   height="10" -   layout="topleft" -   left_pad="6" -   mouse_opaque="false" -   name="text_box5" -   top_delta="1" -   width="40"> -    MB -  </text> -  <text -   type="string" -   length="1" -   follows="left|top" -   height="10" -   layout="topleft" -   left="80" -   name="Cache location" -   top_delta="20" -   width="300"> -    Cache location: -  </text> -  <line_editor -   control_name="CacheLocationTopFolder" -   border_style="line" -   border_thickness="1" -   follows="left|top" -   font="SansSerif" -   height="23" -   layout="topleft" -   left="80" -   max_length="4096" -   name="cache_location" -   top_pad="5" -   width="205" /> -  <button -   follows="left|top" -   height="23" -   label="Browse" -   label_selected="Browse" -   layout="topleft" -   left_pad="5" -   name="set_cache" -   top_delta="-1" -   width="100"> -    <button.commit_callback -     function="Pref.SetCache" /> -  </button> -  <button -    follows="left|top" -    height="23" -    label="Reset" -    label_selected="Reset" -    layout="topleft" -    left_pad="3" -    name="reset_cache" -    top_delta="0" -    width="100"> -    <button.commit_callback -     function="Pref.ResetCache" /> -  </button>    <text           type="string"  | 
