diff options
Diffstat (limited to 'indra/newview')
19 files changed, 438 insertions, 191 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index f76012bdfa..33fa186a2e 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -18,7 +18,7 @@ include(DBusGlib)  include(DirectX)  include(DragDrop)  include(EXPAT) -include(FMODEX) +include(FMODSTUDIO)  include(GLOD)  include(Hunspell)  include(JsonCpp) @@ -63,9 +63,9 @@ if (NOT HAVOK_TPV)     add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)  endif (NOT HAVOK_TPV) -if(FMODEX) -  include_directories(${FMODEX_INCLUDE_DIR}) -endif(FMODEX) +if(FMODSTUDIO) +  include_directories(${FMODSTUDIO_INCLUDE_DIR}) +endif(FMODSTUDIO)  include_directories(      ${DBUSGLIB_INCLUDE_DIRS} @@ -1722,12 +1722,13 @@ if (OPENAL)    set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_OPENAL")  endif (OPENAL) -if (FMODEX) -  set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODEX") -  set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY}) -endif (FMODEX) +if (FMODSTUDIO) +  set(LLSTARTUP_COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS} -DLL_FMODSTUDIO") +  set(FMODWRAPPER_LIBRARY ${FMODSTUDIO_LIBRARY}) +endif (FMODSTUDIO)  set_source_files_properties(llstartup.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}") +set_source_files_properties(llprogressview.cpp PROPERTIES COMPILE_FLAGS "${LLSTARTUP_COMPILE_FLAGS}")  list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES}) @@ -1842,13 +1843,13 @@ if (WINDOWS)              )      endif (ADDRESS_SIZE EQUAL 64) -    if (FMODEX) +    if (FMODSTUDIO)        list(APPEND COPY_INPUT_DEPENDENCIES -           ${SHARED_LIB_STAGING_DIR}/Release/fmodex.dll -           ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmodex.dll -           ${SHARED_LIB_STAGING_DIR}/Debug/fmodexL.dll +           ${SHARED_LIB_STAGING_DIR}/Release/fmod.dll +           ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll +           ${SHARED_LIB_STAGING_DIR}/Debug/fmodL.dll            ) -    endif (FMODEX) +    endif (FMODSTUDIO)      add_custom_command(        OUTPUT  ${CMAKE_CFG_INTDIR}/copy_touched.bat @@ -1859,6 +1860,7 @@ if (WINDOWS)          --arch=${ARCH}          --artwork=${ARTWORK_DIR}          "--bugsplat=${BUGSPLAT_DB}" +        "--fmodstudio=${FMODSTUDIO}"          --build=${CMAKE_CURRENT_BINARY_DIR}          --buildtype=${CMAKE_BUILD_TYPE}          "--channel=${VIEWER_CHANNEL}" @@ -1920,6 +1922,7 @@ if (WINDOWS)            --arch=${ARCH}            --artwork=${ARTWORK_DIR}            "--bugsplat=${BUGSPLAT_DB}" +          "--fmodstudio=${FMODSTUDIO}"            --build=${CMAKE_CURRENT_BINARY_DIR}            --buildtype=${CMAKE_BUILD_TYPE}            "--channel=${VIEWER_CHANNEL}" @@ -2065,6 +2068,7 @@ if (LINUX)          --arch=${ARCH}          --artwork=${ARTWORK_DIR}          "--bugsplat=${BUGSPLAT_DB}" +        "--fmodstudio=${FMODSTUDIO}"          --build=${CMAKE_CURRENT_BINARY_DIR}          --buildtype=${CMAKE_BUILD_TYPE}          "--channel=${VIEWER_CHANNEL}" @@ -2091,6 +2095,7 @@ if (LINUX)        --arch=${ARCH}        --artwork=${ARTWORK_DIR}        "--bugsplat=${BUGSPLAT_DB}" +      "--fmodstudio=${FMODSTUDIO}"        --build=${CMAKE_CURRENT_BINARY_DIR}        --buildtype=${CMAKE_BUILD_TYPE}        "--channel=${VIEWER_CHANNEL}" @@ -2167,6 +2172,7 @@ if (DARWIN)        --arch=${ARCH}        --artwork=${ARTWORK_DIR}        "--bugsplat=${BUGSPLAT_DB}" +      "--fmodstudio=${FMODSTUDIO}"        --build=${CMAKE_CURRENT_BINARY_DIR}        --buildtype=${CMAKE_BUILD_TYPE}        --bundleid=${MACOSX_BUNDLE_GUI_IDENTIFIER} @@ -2201,6 +2207,7 @@ if (DARWIN)            --arch=${ARCH}            --artwork=${ARTWORK_DIR}            "--bugsplat=${BUGSPLAT_DB}" +          "--fmodstudio=${FMODSTUDIO}"            --build=${CMAKE_CURRENT_BINARY_DIR}            --buildtype=${CMAKE_BUILD_TYPE}            "--channel=${VIEWER_CHANNEL}" diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 133cad286f..49df80bfeb 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.4.3 +6.4.4 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d11269a6e6..dfc3c7b89d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -16384,7 +16384,7 @@    <key>FMODExProfilerEnable</key>    <map>      <key>Comment</key> -    <string>Enable profiler tool if using FMOD Ex</string> +    <string>Enable profiler tool if using FMOD Ex or FMOD Studio</string>      <key>Persist</key>      <integer>1</integer>      <key>Type</key> @@ -16395,7 +16395,7 @@    <key>FMODExDecodeBufferSize</key>    <map>      <key>Comment</key> -    <string>Sets the streaming decode buffer size (in milliseconds)</string> +    <string>Sets the streaming decode buffer size (in milliseconds) for FMOD Ex or FMOD Studio</string>      <key>Persist</key>      <integer>1</integer>      <key>Type</key> @@ -16406,7 +16406,7 @@    <key>FMODExStreamBufferSize</key>    <map>      <key>Comment</key> -    <string>Sets the streaming buffer size (in milliseconds)</string> +    <string>Sets the streaming buffer size (in milliseconds) for FMOD Ex or FMOD Studio</string>      <key>Persist</key>      <integer>1</integer>      <key>Type</key> diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt index e01b9e4bc6..cb8d1af535 100644 --- a/indra/newview/linux_tools/client-readme.txt +++ b/indra/newview/linux_tools/client-readme.txt @@ -187,8 +187,8 @@ The 'secondlife' script which launches Second Life contains some  configuration options for advanced troubleshooters.  * AUDIO - Edit the 'secondlife' script and you will see these audio -  options: LL_BAD_OPENAL_DRIVER, LL_BAD_FMOD_ESD, LL_BAD_FMOD_OSS, and -  LL_BAD_FMOD_ALSA.  Second Life tries to use OpenAL, ESD, OSS, then ALSA +  options: LL_BAD_OPENAL_DRIVER, LL_BAD_FMODSTUDIO_DRIVER. +  Second Life tries to use OpenAL, FMODSTUDIO (PULSEAUDIO, ALSA)    audio drivers in this order; you may uncomment the corresponding LL_BAD_*    option to skip an audio driver which you believe may be causing you trouble. diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index c23401d5a6..eb3ead433b 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -4,17 +4,15 @@  ## These options are for self-assisted troubleshooting during this beta  ## testing phase; you should not usually need to touch them. -## - Avoids using any FMOD Ex audio driver. -#export LL_BAD_FMODEX_DRIVER=x +## - Avoids using any FMOD STUDIO audio driver. +#export LL_BAD_FMODSTUDIO_DRIVER=x  ## - Avoids using any OpenAL audio driver.  #export LL_BAD_OPENAL_DRIVER=x -## - Avoids using the FMOD Ex PulseAudio audio driver. +## - Avoids using the FMOD Studio or FMOD Ex PulseAudio audio driver.  #export LL_BAD_FMOD_PULSEAUDIO=x -## - Avoids using the FMOD or FMOD Ex ALSA audio driver. +## - Avoids using the FMOD Studio or FMOD Ex ALSA audio driver.  #export LL_BAD_FMOD_ALSA=x -## - Avoids using the FMOD or FMOD Ex OSS audio driver. -#export LL_BAD_FMOD_OSS=x  ## - Avoids the optional OpenGL extensions which have proven most problematic  ##   on some hardware.  Disabling this option may cause BETTER PERFORMANCE but diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 083a913ef8..e9feae3457 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -229,6 +229,33 @@ void LLProgressView::drawStartTexture(F32 alpha)  	gGL.popMatrix();  } +void LLProgressView::drawLogos(F32 alpha) +{ +    if (mLogosList.empty()) +    { +        return; +    } + +    // logos are tied to label, +    // due to potential resizes we have to figure offsets out on draw or resize +    LLTextBox *logos_label = getChild<LLTextBox>("logos_lbl"); +    S32 offset_x, offset_y; +    logos_label->localPointToScreen(0, 0, &offset_x, &offset_y); +    std::vector<TextureData>::const_iterator iter = mLogosList.begin(); +    std::vector<TextureData>::const_iterator end = mLogosList.end(); +    for (; iter != end; iter++) +    { +        gl_draw_scaled_image_with_border(iter->mDrawRect.mLeft + offset_x, +                             iter->mDrawRect.mBottom + offset_y, +                             iter->mDrawRect.getWidth(), +                             iter->mDrawRect.getHeight(), +                             iter->mTexturep.get(), +                             UI_VERTEX_COLOR % alpha, +                             FALSE, +                             iter->mClipRect, +                             iter->mOffsetRect); +    } +}  void LLProgressView::draw()  { @@ -245,6 +272,7 @@ void LLProgressView::draw()  		}  		LLPanel::draw(); +		drawLogos(alpha);  		return;  	} @@ -257,6 +285,7 @@ void LLProgressView::draw()  		drawStartTexture(alpha);  		LLPanel::draw(); +		drawLogos(alpha);  		// faded out completely - remove panel and reveal world  		if (mFadeToWorldTimer.getElapsedTimeF32() > FADE_TO_WORLD_TIME ) @@ -283,7 +312,7 @@ void LLProgressView::draw()  			// FIXME: this causes a crash that i haven't been able to fix  			mMediaCtrl->unloadMediaSource();	 -			gStartTexture = NULL; +            releaseTextures();  		}  		return;  	} @@ -291,6 +320,7 @@ void LLProgressView::draw()  	drawStartTexture(1.0f);  	// draw children  	LLPanel::draw(); +	drawLogos(1.0f);  }  void LLProgressView::setText(const std::string& text) @@ -309,6 +339,196 @@ void LLProgressView::setMessage(const std::string& msg)  	getChild<LLUICtrl>("message_text")->setValue(mMessage);  } +void LLProgressView::loadLogo(const std::string &path, +                              const U8 image_codec, +                              const LLRect &pos_rect, +                              const LLRectf &clip_rect, +                              const LLRectf &offset_rect) +{ +    // We need these images very early, so we have to force-load them, otherwise they might not load in time. +    if (!gDirUtilp->fileExists(path)) +    { +        return; +    } + +    LLPointer<LLImageFormatted> start_image_frmted = LLImageFormatted::createFromType(image_codec); +    if (!start_image_frmted->load(path)) +    { +        LL_WARNS("AppInit") << "Image load failed: " << path << LL_ENDL; +        return; +    } + +    LLPointer<LLImageRaw> raw = new LLImageRaw; +    if (!start_image_frmted->decode(raw, 0.0f)) +    { +        LL_WARNS("AppInit") << "Image decode failed " << path << LL_ENDL; +        return; +    } +    // HACK: getLocalTexture allows only power of two dimentions +    raw->expandToPowerOfTwo(); + +    TextureData data; +    data.mTexturep = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE); +    data.mDrawRect = pos_rect; +    data.mClipRect = clip_rect; +    data.mOffsetRect = offset_rect; +    mLogosList.push_back(data); +} + +void LLProgressView::initLogos() +{ +    mLogosList.clear(); + +    const U8 image_codec = IMG_CODEC_PNG; +    const LLRectf default_clip(0.f, 1.f, 1.f, 0.f); +    const S32 default_height = 28; +    const S32 default_pad = 15; + +    S32 icon_width, icon_height; + +    // We don't know final screen rect yet, so we can't precalculate position fully +    LLTextBox *logos_label = getChild<LLTextBox>("logos_lbl"); +    S32 texture_start_x = logos_label->getFont()->getWidthF32(logos_label->getText()) + default_pad; +    S32 texture_start_y = -7; + +    // Normally we would just preload these textures from textures.xml, +    // and display them via icon control, but they are only needed on +    // startup and preloaded/UI ones stay forever +    // (and this code was done already so simply reused it) +    std::string temp_str = gDirUtilp->getExpandedFilename(LL_PATH_DEFAULT_SKIN, "textures", "3p_icons"); + +    temp_str += gDirUtilp->getDirDelimiter(); + +#ifdef LL_FMODSTUDIO +    // original image size is 264x96, it is on longer side but +    // with no internal paddings so it gets additional padding +    icon_width = 77; +    icon_height = 21; +    S32 pad_y = 4; +    texture_start_x++; +    loadLogo(temp_str + "fmod_logo.png", +        image_codec, +        LLRect(texture_start_x, texture_start_y + pad_y + icon_height, texture_start_x + icon_width, texture_start_y + pad_y), +        default_clip, +        default_clip); + +    texture_start_x += icon_width + default_pad + 1; +#endif +    // original image size is 342x113, central element is on a larger side +    // plus internal padding, so it gets slightly more height than desired 32 +    icon_width = 88; +    icon_height = 29; +    pad_y = -1; +    loadLogo(temp_str + "havok_logo.png", +        image_codec, +        LLRect(texture_start_x, texture_start_y + pad_y + icon_height, texture_start_x + icon_width, texture_start_y + pad_y), +        default_clip, +        default_clip); + +    texture_start_x += icon_width + default_pad; + +    // 108x41 +    icon_width = 74; +    loadLogo(temp_str + "vivox_logo.png", +        image_codec, +        LLRect(texture_start_x, texture_start_y + default_height, texture_start_x + icon_width, texture_start_y), +        default_clip, +        default_clip); +} + +void LLProgressView::initStartTexture(S32 location_id, bool is_in_production) +{ +    if (gStartTexture.notNull()) +    { +        gStartTexture = NULL; +        LL_INFOS("AppInit") << "re-initializing start screen" << LL_ENDL; +    } + +    LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL; + +    U8 image_codec = IMG_CODEC_PNG; +    std::string temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter(); + +    if ((S32)START_LOCATION_ID_LAST == location_id) +    { +        temp_str += LLStartUp::getScreenLastFilename(); +    } +    else +    { +        std::string path = temp_str + LLStartUp::getScreenHomeFilename(); + +        if (!gDirUtilp->fileExists(path) && is_in_production) +        { +            // Fallback to old file, can be removed later +            // Home image only sets when user changes home, so it will take time for users to switch to pngs +            temp_str += "screen_home.bmp"; +            image_codec = IMG_CODEC_BMP; +        } +        else +        { +            temp_str = path; +        } +    } + +    LLPointer<LLImageFormatted> start_image_frmted = LLImageFormatted::createFromType(image_codec); + +    // Turn off start screen to get around the occasional readback  +    // driver bug +    if (!gSavedSettings.getBOOL("UseStartScreen")) +    { +        LL_INFOS("AppInit") << "Bitmap load disabled" << LL_ENDL; +        return; +    } +    else if (!start_image_frmted->load(temp_str)) +    { +        LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL; +        gStartTexture = NULL; +    } +    else +    { +        gStartImageWidth = start_image_frmted->getWidth(); +        gStartImageHeight = start_image_frmted->getHeight(); + +        LLPointer<LLImageRaw> raw = new LLImageRaw; +        if (!start_image_frmted->decode(raw, 0.0f)) +        { +            LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL; +            gStartTexture = NULL; +        } +        else +        { +            // HACK: getLocalTexture allows only power of two dimentions +            raw->expandToPowerOfTwo(); +            gStartTexture = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE); +        } +    } + +    if (gStartTexture.isNull()) +    { +        gStartTexture = LLViewerTexture::sBlackImagep; +        gStartImageWidth = gStartTexture->getWidth(); +        gStartImageHeight = gStartTexture->getHeight(); +    } +} + +void LLProgressView::initTextures(S32 location_id, bool is_in_production) +{ +    initStartTexture(location_id, is_in_production); +    initLogos(); + +    childSetVisible("panel_icons", mLogosList.empty() ? FALSE : TRUE); +    childSetVisible("panel_top_spacer", mLogosList.empty() ? TRUE : FALSE); +} + +void LLProgressView::releaseTextures() +{ +    gStartTexture = NULL; +    mLogosList.clear(); + +    childSetVisible("panel_top_spacer", TRUE); +    childSetVisible("panel_icons", FALSE); +} +  void LLProgressView::setCancelButtonVisible(BOOL b, const std::string& label)  {  	mCancelBtn->setVisible( b ); diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h index 813576b21d..56377a5889 100644 --- a/indra/newview/llprogressview.h +++ b/indra/newview/llprogressview.h @@ -35,6 +35,7 @@  class LLImageRaw;  class LLButton;  class LLProgressBar; +class LLViewerTexture;  class LLProgressView :   	public LLPanel, @@ -51,6 +52,7 @@ public:  	/*virtual*/ void draw();  	void drawStartTexture(F32 alpha); +	void drawLogos(F32 alpha);  	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);  	/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); @@ -70,6 +72,10 @@ public:  	void setStartupComplete(); +	// we have to preload local textures to make sure they won't be grey +	void initTextures(S32 location_id, bool is_in_production); +	void releaseTextures(); +  	void setCancelButtonVisible(BOOL b, const std::string& label);  	static void onCancelButtonClicked( void* ); @@ -95,6 +101,25 @@ protected:  	bool handleUpdate(const LLSD& event_data);  	static void onIdle(void* user_data); +    void loadLogo(const std::string &path, const U8 image_codec, const LLRect &pos_rect, const LLRectf &clip_rect, const LLRectf &offset_rect); +    // logos have unusual location and need to be preloaded to not appear grey, then deleted +    void initLogos(); +    // Loads a bitmap to display during load +    void initStartTexture(S32 location_id, bool is_in_production); + +private: +    // We need to draw textures on login, but only once. +    // So this vector gets filled up for textures to render and gets cleaned later +    // Some textures have unusual requirements, so we are rendering directly +    class TextureData +    { +    public: +        LLPointer<LLViewerTexture> mTexturep; +        LLRect mDrawRect; +        LLRectf mClipRect; +        LLRectf mOffsetRect; +    }; +    std::vector<TextureData> mLogosList;  };  #endif // LL_LLPROGRESSVIEW_H diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index b532d9a9b4..1be1c4ba96 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -39,8 +39,8 @@  #include "llviewermedia_streamingaudio.h"  #include "llaudioengine.h" -#ifdef LL_FMODEX -# include "llaudioengine_fmodex.h" +#ifdef LL_FMODSTUDIO +# include "llaudioengine_fmodstudio.h"  #endif  #ifdef LL_OPENAL @@ -623,13 +623,13 @@ bool idle_startup()  			delete gAudiop;  			gAudiop = NULL; -#ifdef LL_FMODEX		 +#ifdef LL_FMODSTUDIO  #if !LL_WINDOWS -			if (NULL == getenv("LL_BAD_FMODEX_DRIVER")) +            if (NULL == getenv("LL_BAD_FMODSTUDIO_DRIVER"))  #endif // !LL_WINDOWS -			{ -				gAudiop = (LLAudioEngine *) new LLAudioEngine_FMODEX(gSavedSettings.getBOOL("FMODExProfilerEnable")); -			} +            { +                gAudiop = (LLAudioEngine *) new LLAudioEngine_FMODSTUDIO(gSavedSettings.getBOOL("FMODExProfilerEnable")); +            }  #endif  #ifdef LL_OPENAL @@ -650,7 +650,7 @@ bool idle_startup()  #else  				void* window_handle = NULL;  #endif -				bool init = gAudiop->init(kAUDIO_NUM_SOURCES, window_handle); +				bool init = gAudiop->init(kAUDIO_NUM_SOURCES, window_handle, LLAppViewer::instance()->getSecondLifeTitle());  				if(init)  				{  					gAudiop->setMuted(TRUE); @@ -994,9 +994,8 @@ bool idle_startup()  		gViewerWindow->getWindow()->setCursor(UI_CURSOR_WAIT); -		init_start_screen(agent_location_id); -  		// Display the startup progress bar. +		gViewerWindow->initTextures(agent_location_id);  		gViewerWindow->setShowProgress(TRUE);  		gViewerWindow->setProgressCancelButtonVisible(TRUE, LLTrans::getString("Quit")); @@ -2717,81 +2716,6 @@ std::string LLStartUp::getUserId()      return gUserCredential->userID();  } -// Loads a bitmap to display during load -void init_start_screen(S32 location_id) -{ -	if (gStartTexture.notNull()) -	{ -		gStartTexture = NULL; -		LL_INFOS("AppInit") << "re-initializing start screen" << LL_ENDL; -	} - -	LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL; - -	U8 image_codec = IMG_CODEC_PNG; -	std::string temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter(); - -	if ((S32)START_LOCATION_ID_LAST == location_id) -	{ -		temp_str += LLStartUp::getScreenLastFilename(); -	} -	else -	{ -		std::string path = temp_str + LLStartUp::getScreenHomeFilename(); -		 -		if (!gDirUtilp->fileExists(path) && LLGridManager::getInstance()->isInProductionGrid()) -		{ -			// Fallback to old file, can be removed later -			// Home image only sets when user changes home, so it will take time for users to switch to pngs -			temp_str += "screen_home.bmp"; -			image_codec = IMG_CODEC_BMP; -		} -		else -		{ -			temp_str = path; -		} -	} - -	LLPointer<LLImageFormatted> start_image_frmted = LLImageFormatted::createFromType(image_codec); - -	// Turn off start screen to get around the occasional readback  -	// driver bug -	if(!gSavedSettings.getBOOL("UseStartScreen")) -	{ -		LL_INFOS("AppInit")  << "Bitmap load disabled" << LL_ENDL; -		return; -	} -	else if(!start_image_frmted->load(temp_str) ) -	{ -		LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL; -		gStartTexture = NULL; -	} -	else -	{ -		gStartImageWidth = start_image_frmted->getWidth(); -		gStartImageHeight = start_image_frmted->getHeight(); - -		LLPointer<LLImageRaw> raw = new LLImageRaw; -		if (!start_image_frmted->decode(raw, 0.0f)) -		{ -			LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL; -			gStartTexture = NULL; -		} -		else -		{ -			raw->expandToPowerOfTwo(); -			gStartTexture = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE) ; -		} -	} - -	if(gStartTexture.isNull()) -	{ -		gStartTexture = LLViewerTexture::sBlackImagep ; -		gStartImageWidth = gStartTexture->getWidth() ; -		gStartImageHeight = gStartTexture->getHeight() ; -	} -} -  // frees the bitmap  void release_start_screen() diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index e197591ef8..c966b7d4f9 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1902,7 +1902,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use                      // If there is a new music URL and it's valid, play it.                      if (music_url.size() > 12)                      { -                        if (music_url.substr(0, 7) == "http://") +                        if (music_url.substr(0, 7) == "http://" +                            || music_url.substr(0, 8) == "https://")                          {                              LLViewerRegion *region = LLWorld::getInstance()->getRegion(msg->getSender());                              optionally_start_music(music_url, parcel->mLocalID, region->getRegionID()); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index f64dfcf0d4..44d02b4224 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -5119,6 +5119,14 @@ void LLViewerWindow::revealIntroPanel()  	}  } +void LLViewerWindow::initTextures(S32 location_id) +{ +    if (mProgressView) +    { +        mProgressView->initTextures(location_id, LLGridManager::getInstance()->isInProductionGrid()); +    } +} +  void LLViewerWindow::setShowProgress(const BOOL show)  {  	if (mProgressView) @@ -5172,7 +5180,6 @@ void LLViewerWindow::setProgressCancelButtonVisible( BOOL b, const std::string&  	}  } -  LLProgressView *LLViewerWindow::getProgressView() const  {  	return mProgressView; diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 385bbd57e5..44c1fbd066 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -303,6 +303,7 @@ public:  	BOOL            getCursorHidden() { return mCursorHidden; }  	void			moveCursorToCenter();								// move to center of window +	void			initTextures(S32 location_id);  	void			setShowProgress(const BOOL show);  	BOOL			getShowProgress() const;  	void			setProgressString(const std::string& string); diff --git a/indra/newview/skins/default/textures/3p_icons/fmod_logo.png b/indra/newview/skins/default/textures/3p_icons/fmod_logo.pngBinary files differ new file mode 100644 index 0000000000..5a50e0ad34 --- /dev/null +++ b/indra/newview/skins/default/textures/3p_icons/fmod_logo.png diff --git a/indra/newview/skins/default/textures/3p_icons/havok_logo.png b/indra/newview/skins/default/textures/3p_icons/havok_logo.pngBinary files differ new file mode 100644 index 0000000000..ff1ea3a72e --- /dev/null +++ b/indra/newview/skins/default/textures/3p_icons/havok_logo.png diff --git a/indra/newview/skins/default/textures/3p_icons/vivox_logo.png b/indra/newview/skins/default/textures/3p_icons/vivox_logo.pngBinary files differ new file mode 100644 index 0000000000..6f20e87b7a --- /dev/null +++ b/indra/newview/skins/default/textures/3p_icons/vivox_logo.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index b041e6197c..7325d836d2 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -497,6 +497,7 @@ with the same filename but different name    <texture name="Play_Press" file_name="icons/Play_Press.png" preload="false" />    <texture name="ProgressBar" file_name="widgets/ProgressBar.png" preload="true" scale.left="4" scale.top="11" scale.right="48" scale.bottom="3" /> +  <texture name="ProgressBarSolid" file_name="widgets/ProgressBarSolid.png" preload="true" scale.left="4" scale.top="11" scale.right="48" scale.bottom="3" />    <texture name="ProgressTrack" file_name="widgets/ProgressTrack.png" preload="true" scale.left="4" scale.top="13" scale.right="148" scale.bottom="2" />    <texture name="PushButton_Disabled" file_name="widgets/PushButton_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> diff --git a/indra/newview/skins/default/textures/widgets/ProgressBarSolid.png b/indra/newview/skins/default/textures/widgets/ProgressBarSolid.pngBinary files differ new file mode 100644 index 0000000000..ec0926bfa1 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/ProgressBarSolid.png diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml index a8342e723b..d783d1e23c 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml @@ -2,7 +2,7 @@  <floater   legacy_header_height="18"   can_minimize="false" - height="488" + height="466"   layout="topleft"   name="Inventory Finder"   help_topic="inventory_finder" @@ -202,7 +202,7 @@       left="8"       mouse_opaque="true"       name="icon_settings" -     top="262" +     top="242"       width="16" />      <check_box       height="16" @@ -220,7 +220,7 @@       layout="topleft"       left="8"       name="All" -     top="282" +     top="262"       width="100" />      <button       height="20" @@ -368,6 +368,6 @@       layout="topleft"       name="Close"       right="-6" -     top="454" +     top="434"       width="76" />  </floater> diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index 860caf2d21..e77d097d5f 100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -44,68 +44,129 @@                   width="670" />                  <layout_panel                   auto_resize="false" -                 height="250" +                 height="275"                   layout="topleft" -                 min_height="250" +                 min_height="275"                   name="panel4"                   width="670">                      <icon                       color="LoginProgressBoxCenterColor"                       follows="left|right|bottom|top" -                     height="250" +                     height="275"                       image_name="Rounded_Square"                       layout="topleft"                       left="0"                       top="0"                       width="670" /> -                    <text -                     follows="left|right|top" -                     font="SansSerifHuge" -                     font_shadow="none" -                     halign="left" -                     height="20" -                     layout="topleft" -                     left_delta="47" -                     name="title_text" -                     text_color="LoginProgressBoxTextColor" -                     top_delta="50" -                     right="-47"/> -                    <text -                     follows="left|right|top" -                     font="SansSerif" -                     font_shadow="none" -                     halign="left" -                     height="20" -                     layout="topleft" -                     left_delta="0" -                     name="progress_text" -                     text_color="LoginProgressBoxTextColor" -                     top_pad="5" -                     right="-47" -                     word_wrap="true"/> -                    <progress_bar -                     bottom="115" -                     color_bar="1 1 1 0.96" -                     follows="left|right|top" -                     height="16" -                     layout="topleft" -                     left="45" -                     name="login_progress_bar" -                     right="-45" /> -                    <text +                    <layout_stack                       follows="left|right|top|bottom" -                     font="SansSerifLarge" -                     font_shadow="none" -                     halign="left" -                     height="100" +                     height="275"                       layout="topleft" -                     left="45" -                     line_spacing.pixels="2" -                     name="message_text" -                     text_color="LoginProgressBoxTextColor" -                     top="145" -                     right="-90" -                     word_wrap="true"/> +                     left="0" +                     orientation="vertical" +                     name="vertical_centering" +                     animate="false" +                     top="0" +                     width="670"> +                      <layout_panel +                       auto_resize="false" +                       height="30" +                       layout="topleft" +                       min_height="30" +                       name="panel_top_spacer" +                       width="670"> +                      </layout_panel> +                      <layout_panel +                       auto_resize="false" +                       height="100" +                       layout="topleft" +                       min_height="100" +                       name="panel_login" +                       width="670"> +                        <text +                         follows="left|right|top" +                         layout="topleft" +                         font="SansSerifHuge" +                         font_shadow="none" +                         halign="left" +                         height="20" +                         left="47" +                         top="32" +                         right="-47" +                         name="title_text" +                         text_color="LoginProgressBoxTextColor"/> +                        <text +                         follows="left|right|top" +                         layout="topleft" +                         font="SansSerif" +                         font_shadow="none" +                         halign="left" +                         height="20" +                         top_pad="5" +                         right="-47" +                         left_delta="0" +                         name="progress_text" +                         text_color="LoginProgressBoxTextColor" +                         word_wrap="true"/> +                        <progress_bar +                         color_bar="0 0.67 0.9 0.96" +                         follows="left|right|top" +                         layout="topleft" +                         image_fill="ProgressBarSolid" +                         height="16" +                         left="45" +                         top_pad="5" +                         name="login_progress_bar" +                         right="-45" /> +                      </layout_panel> +                      <layout_panel +                       auto_resize="false" +                       height="110" +                       layout="topleft" +                       min_height="110" +                       name="panel_motd" +                       width="670"> +                        <text +                         follows="left|right|top|bottom" +                         font="SansSerifLarge" +                         font_shadow="none" +                         halign="left" +                         valign="center" +                         height="100" +                         layout="topleft" +                         left="45" +                         line_spacing.pixels="2" +                         name="message_text" +                         text_color="LoginProgressBoxTextColor" +                         top="7" +                         right="-90" +                         word_wrap="true"/> +                      </layout_panel> +                      <layout_panel +                       auto_resize="false" +                       height="40" +                       layout="topleft" +                       min_height="40" +                       name="panel_icons" +                       width="670"> +                        <!--Logos are tied to following label from code--> +                        <text +                         follows="left|right|top" +                         layout="topleft" +                         font="SansSerifLarge" +                         font_shadow="none" +                         halign="left" +                         height="16" +                         width="240" +                         left="47" +                         top="6" +                         line_spacing.pixels="2" +                         name="logos_lbl" +                         text_color="LoginProgressBoxTextColor"> +                          Second Life uses +                        </text> +                      </layout_panel> +                    </layout_stack>                  </layout_panel>                  <layout_panel                   height="200" diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 41eb40c998..b385717dbe 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -516,14 +516,12 @@ class WindowsManifest(ViewerManifest):                  print err.message                  print "Skipping GLOD library (assumming linked statically)" -            # Get fmodex dll, continue if missing -            try: -                if(self.address_size == 64): -                    self.path("fmodex64.dll") +            # Get fmodstudio dll if needed +            if self.args['fmodstudio'] == 'ON': +                if(self.args['configuration'].lower() == 'debug'): +                    self.path("fmodL.dll")                  else: -                    self.path("fmodex.dll") -            except: -                print "Skipping fmodex audio library(assuming other audio engine)" +                    self.path("fmod.dll")              # For textures              self.path("openjpeg.dll") @@ -1048,17 +1046,18 @@ class DarwinManifest(ViewerManifest):                                  ):                      self.path2basename(relpkgdir, libfile) -                # dylibs that vary based on configuration -                if self.args['configuration'].lower() == 'debug': -                    for libfile in ( -                                "libfmodexL.dylib", -                                ): -                        dylibs += path_optional(os.path.join(debpkgdir, libfile), libfile) -                else: -                    for libfile in ( -                                "libfmodex.dylib", -                                ): -                        dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile) +                # Fmod studio dylibs (vary based on configuration) +                if self.args['fmodstudio'] == 'ON': +                    if self.args['configuration'].lower() == 'debug': +                        for libfile in ( +                                    "libfmodL.dylib", +                                    ): +                            dylibs += path_optional(os.path.join(debpkgdir, libfile), libfile) +                    else: +                        for libfile in ( +                                    "libfmod.dylib", +                                    ): +                            dylibs += path_optional(os.path.join(relpkgdir, libfile), libfile)                  # our apps                  executable_path = {} @@ -1530,13 +1529,15 @@ class Linux_i686_Manifest(LinuxManifest):                  print "tcmalloc files not found, skipping"                  pass -            try: -                self.path("libfmodex-*.so") -                self.path("libfmodex.so") -                pass -            except: -                print "Skipping libfmodex.so - not found" -                pass +            if self.args['fmodstudio'] == 'ON': +                try: +                    self.path("libfmod.so.11.7") +                    self.path("libfmod.so.11") +                    self.path("libfmod.so") +                    pass +                except: +                    print "Skipping libfmod.so - not found" +                    pass          # Vivox runtimes @@ -1566,6 +1567,7 @@ if __name__ == "__main__":      extra_arguments = [          dict(name='bugsplat', description="""BugSplat database to which to post crashes,               if BugSplat crash reporting is desired""", default=''), +        dict(name='fmodstudio', description="""Indication if fmod studio libraries are needed""", default='OFF'),          ]      try:          main(extra=extra_arguments) | 
