Merge viewer-bear

Tue, 08 Mar 2016 09:08:20 +0100

author
Ansariel
date
Tue, 08 Mar 2016 09:08:20 +0100
changeset 48916
3a87b4065448
parent 48903
3c8cf8ecef3a
parent 48915
b11d9da3c1bf
child 48917
8af8a10da752

Merge viewer-bear

BuildParams file | annotate | diff | revisions
autobuild.xml file | annotate | diff | revisions
doc/contributions.txt file | annotate | diff | revisions
indra/llcorehttp/CMakeLists.txt file | annotate | diff | revisions
indra/media_plugins/cef/CMakeLists.txt file | annotate | diff | revisions
indra/newview/llavataractions.cpp file | annotate | diff | revisions
indra/newview/llfavoritesbar.cpp file | annotate | diff | revisions
indra/newview/llfavoritesbar.h file | annotate | diff | revisions
indra/newview/llfloatersidepanelcontainer.cpp file | annotate | diff | revisions
indra/newview/lllocalbitmaps.cpp file | annotate | diff | revisions
indra/newview/llpanelface.cpp file | annotate | diff | revisions
indra/newview/llsidepanelappearance.cpp file | annotate | diff | revisions
indra/newview/lltexturectrl.cpp file | annotate | diff | revisions
indra/newview/lltexturefetch.cpp file | annotate | diff | revisions
indra/newview/llviewerparcelmgr.cpp file | annotate | diff | revisions
indra/newview/llviewertexture.cpp file | annotate | diff | revisions
indra/newview/llviewertexture.h file | annotate | diff | revisions
indra/newview/llviewertexturelist.cpp file | annotate | diff | revisions
indra/newview/llviewertexturelist.h file | annotate | diff | revisions
indra/newview/llvoavatar.cpp file | annotate | diff | revisions
indra/newview/viewer_manifest.py file | annotate | diff | revisions
     1.1 --- a/BuildParams	Tue Mar 08 08:52:36 2016 +0100
     1.2 +++ b/BuildParams	Tue Mar 08 09:08:20 2016 +0100
     1.3 @@ -70,15 +70,12 @@
     1.4  # the viewer_channel_suffix is prefixed by a blank and then appended to the viewer_channel
     1.5  # for the package in a setting that overrides the compiled-in value
     1.6  ################################################################
     1.7 -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City
     1.8 -## additional_packages = "EDU"
     1.9 +additional_packages = "EDU"
    1.10  
    1.11  # The EDU package allows us to create a separate release channel whose expirations
    1.12  # are synchronized as much as possible with the academic year
    1.13 -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City
    1.14 -## EDU_sourceid = ""
    1.15 -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City
    1.16 -## EDU_viewer_channel_suffix = "edu"
    1.17 +EDU_sourceid = ""
    1.18 +EDU_viewer_channel_suffix = "edu"
    1.19  
    1.20  # Notifications - to configure email notices, add a setting like this:
    1.21  # <username>_<reponame>.email = <email-address>
     2.1 --- a/doc/contributions.txt	Tue Mar 08 08:52:36 2016 +0100
     2.2 +++ b/doc/contributions.txt	Tue Mar 08 09:08:20 2016 +0100
     2.3 @@ -188,6 +188,7 @@
     2.4  	STORM-2105
     2.5  	MAINT-5533
     2.6  	MAINT-5756
     2.7 +	MAINT-2199
     2.8  Aralara Rajal
     2.9  Arare Chantilly
    2.10  	CHUIBUG-191
     3.1 --- a/indra/llcorehttp/CMakeLists.txt	Tue Mar 08 08:52:36 2016 +0100
     3.2 +++ b/indra/llcorehttp/CMakeLists.txt	Tue Mar 08 09:08:20 2016 +0100
     3.3 @@ -145,6 +145,43 @@
     3.4                            "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llcorehttp_peer.py"
     3.5                            )
     3.6  
     3.7 +if (DARWIN)
     3.8 +  # Path inside the app bundle where we'll need to copy libraries
     3.9 +  set(LL_TEST_DESTINATION_DIR
    3.10 +    ${CMAKE_SOURCE_DIR}/../build-darwin-i386/sharedlibs/Resources
    3.11 +  )
    3.12 +
    3.13 +  # Create the Contents/Resources directory
    3.14 +  add_custom_command(
    3.15 +    TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    3.16 +    COMMAND ${CMAKE_COMMAND}
    3.17 +    ARGS
    3.18 +      -E
    3.19 +      make_directory
    3.20 +      ${LL_TEST_DESTINATION_DIR}
    3.21 +    COMMENT "Creating Resources directory in app bundle."
    3.22 +  )
    3.23 +  
    3.24 +  # Copy the required libraries to the package app
    3.25 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    3.26 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib ${LL_TEST_DESTINATION_DIR}
    3.27 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib
    3.28 +  )
    3.29 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    3.30 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib ${LL_TEST_DESTINATION_DIR}
    3.31 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib
    3.32 +  )
    3.33 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    3.34 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib ${LL_TEST_DESTINATION_DIR}
    3.35 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib
    3.36 +  )
    3.37 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    3.38 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib ${LL_TEST_DESTINATION_DIR}
    3.39 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib
    3.40 +  )
    3.41 +
    3.42 +endif (DARWIN)
    3.43 +
    3.44    #
    3.45    # Example Programs
    3.46    #
     4.1 --- a/indra/media_plugins/cef/CMakeLists.txt	Tue Mar 08 08:52:36 2016 +0100
     4.2 +++ b/indra/media_plugins/cef/CMakeLists.txt	Tue Mar 08 09:08:20 2016 +0100
     4.3 @@ -127,4 +127,12 @@
     4.4      LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
     4.5    )
     4.6  
     4.7 +  add_custom_command(TARGET media_plugin_cef
     4.8 +    POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework"
     4.9 +        "@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
    4.10 +        "$<TARGET_FILE:media_plugin_cef>"
    4.11 +    VERBATIM
    4.12 +    COMMENT "Fixing path to CEF Framework"
    4.13 +  )
    4.14 +
    4.15  endif (DARWIN)
     5.1 --- a/indra/newview/llavataractions.cpp	Tue Mar 08 08:52:36 2016 +0100
     5.2 +++ b/indra/newview/llavataractions.cpp	Tue Mar 08 09:08:20 2016 +0100
     5.3 @@ -745,7 +745,8 @@
     5.4  	static LLInventoryPanel* get_active_inventory_panel()
     5.5  	{
     5.6  		LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
     5.7 -		if (!active_panel)
     5.8 +		LLFloater* floater_appearance = LLFloaterReg::findInstance("appearance");
     5.9 +		if (!active_panel || (floater_appearance && floater_appearance->hasFocus()))
    5.10  		{
    5.11  			active_panel = get_outfit_editor_inventory_panel();
    5.12  		}
     6.1 --- a/indra/newview/llfavoritesbar.cpp	Tue Mar 08 08:52:36 2016 +0100
     6.2 +++ b/indra/newview/llfavoritesbar.cpp	Tue Mar 08 09:08:20 2016 +0100
     6.3 @@ -1871,6 +1871,16 @@
     6.4  	    }
     6.5  	}
     6.6  
     6.7 +	for (std::set<LLUUID>::iterator it = mMissingSLURLs.begin(); it != mMissingSLURLs.end(); it++)
     6.8 +	{
     6.9 +		slurls_map_t::iterator slurl_iter = mSLURLs.find(*it);
    6.10 +		if (slurl_iter != mSLURLs.end())
    6.11 +		{
    6.12 +			pref_changed = true;
    6.13 +			break;
    6.14 +		}
    6.15 +	}
    6.16 +
    6.17  	if((items != mPrevFavorites) || name_changed || pref_changed)
    6.18  	{
    6.19  	    std::string filename = getStoredFavoritesFilename();
    6.20 @@ -1891,6 +1901,7 @@
    6.21  
    6.22  			LLSD user_llsd;
    6.23  			S32 fav_iter = 0;
    6.24 +			mMissingSLURLs.clear();
    6.25  			for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); it++)
    6.26  			{
    6.27  				LLSD value;
    6.28 @@ -1908,8 +1919,10 @@
    6.29  					else
    6.30  					{
    6.31  						getSLURL((*it)->getAssetUUID());
    6.32 +						value["slurl"] = "";
    6.33 +						user_llsd[fav_iter] = value;
    6.34  						mUpdateRequired = true;
    6.35 -						return FALSE;
    6.36 +						mMissingSLURLs.insert((*it)->getAssetUUID());
    6.37  					}
    6.38  				}
    6.39  				else
    6.40 @@ -1945,7 +1958,6 @@
    6.41  												<< "' at '" << filename << "' " << LL_ENDL;
    6.42  			}
    6.43  		}
    6.44 -
    6.45  		mPrevFavorites = items;
    6.46  	}
    6.47  
     7.1 --- a/indra/newview/llfavoritesbar.h	Tue Mar 08 08:52:36 2016 +0100
     7.2 +++ b/indra/newview/llfavoritesbar.h	Tue Mar 08 09:08:20 2016 +0100
     7.3 @@ -252,7 +252,7 @@
     7.4  
     7.5  	typedef std::map<LLUUID, std::string> slurls_map_t;
     7.6  	slurls_map_t mSLURLs;
     7.7 -
     7.8 +	std::set<LLUUID> mMissingSLURLs;
     7.9  	bool mIsDirty;
    7.10  
    7.11  	struct IsNotInFavorites
     8.1 --- a/indra/newview/llfloatersidepanelcontainer.cpp	Tue Mar 08 08:52:36 2016 +0100
     8.2 +++ b/indra/newview/llfloatersidepanelcontainer.cpp	Tue Mar 08 09:08:20 2016 +0100
     8.3 @@ -73,7 +73,11 @@
     8.4  			LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel("appearance"));
     8.5  			if ( panel_appearance )
     8.6  			{
     8.7 -				panel_appearance->getWearable()->onClose();
     8.8 +				LLPanelEditWearable *edit_wearable_ptr = panel_appearance->getWearable();
     8.9 +				if (edit_wearable_ptr)
    8.10 +				{
    8.11 +					edit_wearable_ptr->onClose();
    8.12 +				}
    8.13  				panel_appearance->showOutfitsInventoryPanel();
    8.14  			}
    8.15  		}
     9.1 --- a/indra/newview/llsidepanelappearance.cpp	Tue Mar 08 08:52:36 2016 +0100
     9.2 +++ b/indra/newview/llsidepanelappearance.cpp	Tue Mar 08 09:08:20 2016 +0100
     9.3 @@ -200,7 +200,7 @@
     9.4  
     9.5  		if (is_outfit_edit_visible || is_wearable_edit_visible)
     9.6  		{
     9.7 -			const LLViewerWearable *wearable_ptr = mEditWearable->getWearable();
     9.8 +			const LLViewerWearable *wearable_ptr = mEditWearable ? mEditWearable->getWearable() : NULL;
     9.9  			if (!wearable_ptr)
    9.10  			{
    9.11  				LL_WARNS() << "Visibility change to invalid wearable" << LL_ENDL;
    10.1 --- a/indra/newview/llviewerparcelmgr.cpp	Tue Mar 08 08:52:36 2016 +0100
    10.2 +++ b/indra/newview/llviewerparcelmgr.cpp	Tue Mar 08 09:08:20 2016 +0100
    10.3 @@ -159,8 +159,8 @@
    10.4  	// JC: Resolved a merge conflict here, eliminated
    10.5  	// mBlockedImage->setAddressMode(LLTexUnit::TAM_WRAP);
    10.6  	// because it is done in llviewertexturelist.cpp
    10.7 -	mBlockedImage = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryLines.png");
    10.8 -	mPassImage = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryPassLines.png");
    10.9 +	mBlockedImage = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryLines.png", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI);
   10.10 +	mPassImage = LLViewerTextureManager::getFetchedTextureFromFile("world/NoEntryPassLines.png", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI);
   10.11  
   10.12  	S32 overlay_size = mParcelsPerEdge * mParcelsPerEdge / PARCEL_OVERLAY_CHUNKS;
   10.13  	sPackedOverlay = new U8[overlay_size];
    11.1 --- a/indra/newview/llviewertexture.h	Tue Mar 08 08:52:36 2016 +0100
    11.2 +++ b/indra/newview/llviewertexture.h	Tue Mar 08 09:08:20 2016 +0100
    11.3 @@ -686,7 +686,7 @@
    11.4  	static LLViewerFetchedTexture* getFetchedTextureFromFile(const std::string& filename,									 
    11.5  									 FTType f_type = FTT_LOCAL_FILE,
    11.6  									 BOOL usemipmap = TRUE,
    11.7 -									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI,
    11.8 +									 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_NONE,
    11.9  									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,
   11.10  									 LLGLint internal_format = 0,
   11.11  									 LLGLenum primary_format = 0,
    12.1 --- a/indra/newview/llviewertexturelist.cpp	Tue Mar 08 08:52:36 2016 +0100
    12.2 +++ b/indra/newview/llviewertexturelist.cpp	Tue Mar 08 09:08:20 2016 +0100
    12.3 @@ -1764,17 +1764,18 @@
    12.4  	//don't compress UI images
    12.5  	imagep->getGLTexture()->setAllowCompression(false);
    12.6  
    12.7 -	//all UI images are non-deletable, except downloadable icons
    12.8 -	if (imagep->getBoostLevel() != LLGLTexture::BOOST_ICON)
    12.9 -	{
   12.10 -		imagep->setNoDelete();
   12.11 -	}
   12.12 -
   12.13  	LLUIImagePtr new_imagep = new LLUIImage(name, imagep);
   12.14  	new_imagep->setScaleStyle(scale_style);
   12.15  
   12.16 -	mUIImages.insert(std::make_pair(name, new_imagep));
   12.17 -	mUITextureList.push_back(imagep);
   12.18 +	if (imagep->getBoostLevel() != LLGLTexture::BOOST_ICON &&
   12.19 +		imagep->getBoostLevel() != LLGLTexture::BOOST_PREVIEW)
   12.20 +	{
   12.21 +		// Don't add downloadable content into this list
   12.22 +		// all UI images are non-deletable and list does not support deletion
   12.23 +		imagep->setNoDelete();
   12.24 +		mUIImages.insert(std::make_pair(name, new_imagep));
   12.25 +		mUITextureList.push_back(imagep);
   12.26 +	}
   12.27  
   12.28  	//Note:
   12.29  	//Some other textures such as ICON also through this flow to be fetched.
    13.1 --- a/indra/newview/viewer_manifest.py	Tue Mar 08 08:52:36 2016 +0100
    13.2 +++ b/indra/newview/viewer_manifest.py	Tue Mar 08 09:08:20 2016 +0100
    13.3 @@ -28,6 +28,7 @@
    13.4  """
    13.5  import sys
    13.6  import os.path
    13.7 +import shutil
    13.8  import errno
    13.9  import re
   13.10  import tarfile
   13.11 @@ -1031,14 +1032,17 @@
   13.12                  # This code constructs a relative path from the
   13.13                  # target framework folder back to the location of the symlink.
   13.14                  # It needs to be relative so that the symlink still works when
   13.15 -                # (as is normal) the user moves the app bunlde out of the DMG
   13.16 +                # (as is normal) the user moves the app bundle out of the DMG
   13.17                  # and into the /Applications folder. Note we also call 'raise'
   13.18                  # to terminate the process if we get an error since without
   13.19                  # this symlink, Second Life web media can't possibly work.
   13.20                  # Real Framework folder:
   13.21                  #   Second Life.app/Contents/Frameworks/Chromium Embedded Framework.framework/
   13.22 -                # Location of symlink and why it'ds relavie 
   13.23 +                # Location of symlink and why it'ds relative 
   13.24                  #   Second Life.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework/
   13.25 +                # Real Frameworks folder, with the symlink inside the bundled SLPlugin.app (and why it's relative)
   13.26 +                #   <top level>.app/Contents/Frameworks/Chromium Embedded Framework.framework/
   13.27 +                #   <top level>.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework ->
   13.28                  frameworkpath = os.path.join(os.pardir, os.pardir, os.pardir, os.pardir, "Frameworks", "Chromium Embedded Framework.framework")
   13.29                  try:
   13.30                      symlinkf(frameworkpath, pluginframeworkpath)
   13.31 @@ -1048,10 +1052,6 @@
   13.32  
   13.33              self.end_prefix("Contents")
   13.34  
   13.35 -        # fix up media_plugin.dylib so it knows where to look for CEF files it needs
   13.36 -        self.run_command('install_name_tool -change "@executable_path/Chromium Embedded Framework" "@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" "%(config)s/Firestorm.app/Contents/Resources/llplugin/media_plugin_cef.dylib"' %
   13.37 -                        { 'config' : self.args['configuration'] })
   13.38 -
   13.39          # NOTE: the -S argument to strip causes it to keep enough info for
   13.40          # annotated backtraces (i.e. function names in the crash log).  'strip' with no
   13.41          # arguments yields a slightly smaller binary but makes crash logs mostly useless.
   13.42 @@ -1710,12 +1710,33 @@
   13.43          # file, but that strategy doesn't work so well if we don't have
   13.44          # permissions to remove it. Check to see if it's already the
   13.45          # symlink we want, which is the usual reason for EEXIST.
   13.46 -        if not (os.path.islink(dst) and os.readlink(dst) == src):
   13.47 -            # Here either dst isn't a symlink or it's the wrong symlink.
   13.48 -            # Remove and recreate. Caller will just have to deal with any
   13.49 -            # exceptions at this stage.
   13.50 +        elif os.path.islink(dst):
   13.51 +            if os.readlink(dst) == src:
   13.52 +                # the requested link already exists
   13.53 +                pass
   13.54 +            else:
   13.55 +                # dst is the wrong symlink; attempt to remove and recreate it
   13.56 +                os.remove(dst)
   13.57 +                os.symlink(src, dst)
   13.58 +        elif os.path.isdir(dst):
   13.59 +            print "Requested symlink (%s) exists but is a directory; replacing" % dst
   13.60 +            shutil.rmtree(dst)
   13.61 +            os.symlink(src, dst)
   13.62 +        elif os.path.exists(dst):
   13.63 +            print "Requested symlink (%s) exists but is a file; replacing" % dst
   13.64              os.remove(dst)
   13.65              os.symlink(src, dst)
   13.66 +        else:
   13.67 +            # see if the problem is that the parent directory does not exist
   13.68 +            # and try to explain what is missing
   13.69 +            (parent, tail) = os.path.split(dst)
   13.70 +            while not os.path.exists(parent):
   13.71 +                (parent, tail) = os.path.split(parent)
   13.72 +            if tail:
   13.73 +                raise Exception("Requested symlink (%s) cannot be created because %s does not exist"
   13.74 +                                % os.path.join(parent, tail))
   13.75 +            else:
   13.76 +                raise
   13.77  
   13.78  if __name__ == "__main__":
   13.79      main()

mercurial