diff options
34 files changed, 385 insertions, 169 deletions
| diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index 5a2e3f73f9..f4dc3b927b 100644 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp @@ -658,7 +658,12 @@ BOOL LLKeyframeMotion::onActivate()  	// If the keyframe anim has an associated emote, trigger it.   	if( mJointMotionList->mEmoteName.length() > 0 )  	{ -		mCharacter->startMotion( gAnimLibrary.stringToAnimState(mJointMotionList->mEmoteName) ); +		LLUUID emote_anim_id = gAnimLibrary.stringToAnimState(mJointMotionList->mEmoteName); +		// don't start emote if already active to avoid recursion +		if (!mCharacter->isMotionActive(emote_anim_id)) +		{ +			mCharacter->startMotion( emote_anim_id ); +		}  	}  	mLastLoopedTime = 0.f; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 2ab6e327b7..dae759ca5f 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -105,9 +105,9 @@ void check_all_images()  	}  } -void LLImageGL::checkTexSize() const +void LLImageGL::checkTexSize(bool forced) const  { -	if (gDebugGL && mTarget == GL_TEXTURE_2D) +	if ((forced || gDebugGL) && mTarget == GL_TEXTURE_2D)  	{  		GLint texname;  		glGetIntegerv(GL_TEXTURE_BINDING_2D, &texname); @@ -129,6 +129,8 @@ void LLImageGL::checkTexSize() const  		glGetTexLevelParameteriv(mTarget, 0, GL_TEXTURE_WIDTH, (GLint*)&x);  		glGetTexLevelParameteriv(mTarget, 0, GL_TEXTURE_HEIGHT, (GLint*)&y) ;  		stop_glerror() ; +		llcallstacks << "w: " << x << " h: " << y << llcallstacksendl ; +  		if(!x || !y)  		{  			return ; @@ -138,11 +140,13 @@ void LLImageGL::checkTexSize() const  			error = TRUE;  			if (gDebugSession)  			{ -				gFailLog << "wrong texture size and discard level!" << std::endl; +				gFailLog << "wrong texture size and discard level!" <<  +					mWidth << " Height: " << mHeight << " Current Level: " << mCurrentDiscardLevel << std::endl;  			}  			else  			{ -				llerrs << "wrong texture size and discard level!" << llendl ; +				llerrs << "wrong texture size and discard level: width: " <<  +					mWidth << " Height: " << mHeight << " Current Level: " << mCurrentDiscardLevel << llendl ;  			}  		} @@ -1044,7 +1048,9 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_  {  	if (gGL.getTexUnit(0)->bind(this, false, true))  	{ -		//checkTexSize() ; +		checkTexSize(true) ; +		llcallstacks << fb_x << " : " << fb_y << " : " << x_pos << " : " << y_pos << " : " << width << " : " << height << llcallstacksendl ; +  		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, fb_x, fb_y, x_pos, y_pos, width, height);  		mGLTextureCreated = true;  		stop_glerror(); diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 1b303307f6..03939888a5 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -157,7 +157,7 @@ public:  	void updatePickMask(S32 width, S32 height, const U8* data_in);  	BOOL getMask(const LLVector2 &tc); -	void checkTexSize() const ; +	void checkTexSize(bool forced = false) const ;  	// Sets the addressing mode used to sample the texture   	//  (such as wrapping, mirrored wrapping, and clamp) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index e672252a50..a55e9c0395 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -563,6 +563,7 @@ void LLFloater::handleVisibilityChange ( BOOL new_visibility )  void LLFloater::openFloater(const LLSD& key)  { +	llinfos << "Opening floater " << getName() << llendl;  	mKey = key; // in case we need to open ourselves again  	if (getSoundFlags() != SILENT  @@ -603,6 +604,7 @@ void LLFloater::openFloater(const LLSD& key)  void LLFloater::closeFloater(bool app_quitting)  { +	llinfos << "Closing floater " << getName() << llendl;  	if (app_quitting)  	{  		LLFloater::sQuitting = true; diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 781c111474..e67f0ec3fc 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -1321,6 +1321,8 @@ void LLView::drawChildren()  			if (viewp->getVisible() && viewp->getRect().isValid())  			{ +				// check for bad data +				llassert_always(viewp->getVisible() == TRUE);  				// Only draw views that are within the root view  				localRectToScreen(viewp->getRect(),&screenRect);  				if ( rootRect.overlaps(screenRect)  && LLUI::sDirtyRect.overlaps(screenRect)) diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index 9f66a77c64..c3a3f8e2b2 100644 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -45,12 +45,16 @@ set(media_plugin_webkit_LINK_LIBRARIES    ${PULSEAUDIO_LIBRARIES}  ) -if (LINUX) +# Select which VolumeCatcher implementation to use +if (LINUX AND PULSEAUDIO)    list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp)    list(APPEND media_plugin_webkit_LINK_LIBRARIES         ${UI_LIBRARIES}     # for glib/GTK         ) -endif (LINUX) +else (LINUX AND PULSEAUDIO) +  # All other platforms use the dummy volume catcher for now. +  list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp) +endif (LINUX AND PULSEAUDIO)  add_library(media_plugin_webkit      SHARED diff --git a/indra/media_plugins/webkit/dummy_volume_catcher.cpp b/indra/media_plugins/webkit/dummy_volume_catcher.cpp new file mode 100644 index 0000000000..45b2c62eba --- /dev/null +++ b/indra/media_plugins/webkit/dummy_volume_catcher.cpp @@ -0,0 +1,63 @@ +/**  + * @file dummy_volume_catcher.cpp + * @brief A null implementation of the "VolumeCatcher" class for platforms where it's not implemented yet. + * + * @cond + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + * @endcond + */ + +#include "volume_catcher.h" + + +class VolumeCatcherImpl +{ +}; + +///////////////////////////////////////////////////// + +VolumeCatcher::VolumeCatcher() +{ +	pimpl = NULL; +} + +VolumeCatcher::~VolumeCatcher() +{ +} + +void VolumeCatcher::setVolume(F32 volume) +{ +} + +void VolumeCatcher::setPan(F32 pan) +{ +} + +void VolumeCatcher::pump() +{ +} + diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp index 52ab766f7f..2e7fda865e 100644 --- a/indra/media_plugins/webkit/linux_volume_catcher.cpp +++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp @@ -42,11 +42,9 @@  #include "linden_common.h" -#include "linux_volume_catcher.h" +#include "volume_catcher.h" -#if LL_PULSEAUDIO_ENABLED -  extern "C" {  #include <glib.h> @@ -161,11 +159,11 @@ extern "C" {  } -class LinuxVolumeCatcherImpl +class VolumeCatcherImpl  {  public: -	LinuxVolumeCatcherImpl(); -	~LinuxVolumeCatcherImpl(); +	VolumeCatcherImpl(); +	~VolumeCatcherImpl();  	void setVolume(F32 volume);  	void pump(void); @@ -189,7 +187,7 @@ public:  	bool mGotSyms;  }; -LinuxVolumeCatcherImpl::LinuxVolumeCatcherImpl() +VolumeCatcherImpl::VolumeCatcherImpl()  	: mDesiredVolume(0.0f),  	  mMainloop(NULL),  	  mPAContext(NULL), @@ -199,17 +197,17 @@ LinuxVolumeCatcherImpl::LinuxVolumeCatcherImpl()  	init();  } -LinuxVolumeCatcherImpl::~LinuxVolumeCatcherImpl() +VolumeCatcherImpl::~VolumeCatcherImpl()  {  	cleanup();  } -bool LinuxVolumeCatcherImpl::loadsyms(std::string pulse_dso_name) +bool VolumeCatcherImpl::loadsyms(std::string pulse_dso_name)  {  	return grab_pa_syms(pulse_dso_name);  } -void LinuxVolumeCatcherImpl::init() +void VolumeCatcherImpl::init()  {  	// try to be as defensive as possible because PA's interface is a  	// bit fragile and (for our purposes) we'd rather simply not function @@ -262,7 +260,7 @@ void LinuxVolumeCatcherImpl::init()  	}  } -void LinuxVolumeCatcherImpl::cleanup() +void VolumeCatcherImpl::cleanup()  {  	mConnected = false; @@ -280,7 +278,7 @@ void LinuxVolumeCatcherImpl::cleanup()  	mMainloop = NULL;  } -void LinuxVolumeCatcherImpl::setVolume(F32 volume) +void VolumeCatcherImpl::setVolume(F32 volume)  {  	mDesiredVolume = volume; @@ -294,13 +292,13 @@ void LinuxVolumeCatcherImpl::setVolume(F32 volume)  	pump();  } -void LinuxVolumeCatcherImpl::pump() +void VolumeCatcherImpl::pump()  {  	gboolean may_block = FALSE;  	g_main_context_iteration(g_main_context_default(), may_block);  } -void LinuxVolumeCatcherImpl::connected_okay() +void VolumeCatcherImpl::connected_okay()  {  	pa_operation *op; @@ -324,7 +322,7 @@ void LinuxVolumeCatcherImpl::connected_okay()  	}  } -void LinuxVolumeCatcherImpl::update_all_volumes(F32 volume) +void VolumeCatcherImpl::update_all_volumes(F32 volume)  {  	for (std::set<U32>::iterator it = mSinkInputIndices.begin();  	     it != mSinkInputIndices.end(); ++it) @@ -333,7 +331,7 @@ void LinuxVolumeCatcherImpl::update_all_volumes(F32 volume)  	}  } -void LinuxVolumeCatcherImpl::update_index_volume(U32 index, F32 volume) +void VolumeCatcherImpl::update_index_volume(U32 index, F32 volume)  {  	static pa_cvolume cvol;  	llpa_cvolume_set(&cvol, mSinkInputNumChannels[index], @@ -355,7 +353,7 @@ void LinuxVolumeCatcherImpl::update_index_volume(U32 index, F32 volume)  void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *sii, int eol, void *userdata)  { -	LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata); +	VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata);  	llassert(impl);  	if (0 == eol) @@ -386,7 +384,7 @@ void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info  void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata)  { -	LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata); +	VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata);  	llassert(impl);  	switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) { @@ -420,7 +418,7 @@ void callback_subscription_alert(pa_context *context, pa_subscription_event_type  void callback_context_state(pa_context *context, void *userdata)  { -	LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata); +	VolumeCatcherImpl *impl = dynamic_cast<VolumeCatcherImpl*>((VolumeCatcherImpl*)userdata);  	llassert(impl);  	switch (llpa_context_get_state(context)) @@ -441,48 +439,30 @@ void callback_context_state(pa_context *context, void *userdata)  ///////////////////////////////////////////////////// -LinuxVolumeCatcher::LinuxVolumeCatcher() +VolumeCatcher::VolumeCatcher()  { -	pimpl = new LinuxVolumeCatcherImpl(); +	pimpl = new VolumeCatcherImpl();  } -LinuxVolumeCatcher::~LinuxVolumeCatcher() +VolumeCatcher::~VolumeCatcher()  {  	delete pimpl;  	pimpl = NULL;  } -void LinuxVolumeCatcher::setVolume(F32 volume) +void VolumeCatcher::setVolume(F32 volume)  {  	llassert(pimpl);  	pimpl->setVolume(volume);  } -void LinuxVolumeCatcher::pump() -{ -	llassert(pimpl); -	pimpl->pump(); -} - -#else // !LL_PULSEAUDIO_ENABLED - -// stub. - -LinuxVolumeCatcher::LinuxVolumeCatcher() -{ -	pimpl = NULL; -} - -LinuxVolumeCatcher::~LinuxVolumeCatcher() +void VolumeCatcher::setPan(F32 pan)  { +	// TODO: implement this (if possible)  } -void LinuxVolumeCatcher::setVolume(F32 volume) -{ -} - -void LinuxVolumeCatcher::pump() +void VolumeCatcher::pump()  { +	llassert(pimpl); +	pimpl->pump();  } - -#endif // LL_PULSEAUDIO_ENABLED diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 436e077e9b..47766a24cb 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -50,9 +50,7 @@  # define LL_QTWEBKIT_USES_PIXMAPS 0  #endif // LL_LINUX -#if LL_LINUX -# include "linux_volume_catcher.h" -#endif // LL_LINUX +# include "volume_catcher.h"  #if LL_WINDOWS  # include <direct.h> @@ -119,9 +117,7 @@ private:  	F32 mBackgroundG;  	F32 mBackgroundB; -#if LL_LINUX -	LinuxVolumeCatcher mLinuxVolumeCatcher; -#endif // LL_LINUX +	VolumeCatcher mVolumeCatcher;  	void setInitState(int state)  	{ @@ -135,9 +131,7 @@ private:  	{  		LLQtWebKit::getInstance()->pump( milliseconds ); -#if LL_LINUX -		mLinuxVolumeCatcher.pump(); -#endif // LL_LINUX +		mVolumeCatcher.pump();  		checkEditState(); @@ -1139,9 +1133,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)  void MediaPluginWebKit::setVolume(F32 volume)  { -#if LL_LINUX -	mLinuxVolumeCatcher.setVolume(volume); -#endif // LL_LINUX +	mVolumeCatcher.setVolume(volume);  }  int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data) diff --git a/indra/media_plugins/webkit/volume_catcher.h b/indra/media_plugins/webkit/volume_catcher.h new file mode 100644 index 0000000000..77b10cfed0 --- /dev/null +++ b/indra/media_plugins/webkit/volume_catcher.h @@ -0,0 +1,59 @@ +/**  + * @file volume_catcher.h + * @brief Interface to a class with platform-specific implementations that allows control of the audio volume of all sources in the current process. + * + * @cond + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + * @endcond + */ + +#ifndef VOLUME_CATCHER_H +#define VOLUME_CATCHER_H + +#include "linden_common.h" + +class VolumeCatcherImpl; + +class VolumeCatcher +{ + public: +	VolumeCatcher(); +	~VolumeCatcher(); + +	void setVolume(F32 volume); // 0.0 - 1.0 +	 +	// Set the left-right pan of audio sources +	// where -1.0 = left, 0 = center, and 1.0 = right +	void setPan(F32 pan);  + +	void pump(); // call this at least a few times a second if you can - it affects how quickly we can 'catch' a new audio source and adjust its volume +	 + private: +	VolumeCatcherImpl *pimpl; +}; + +#endif // VOLUME_CATCHER_H diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 21801b503c..893162e189 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10633,7 +10633,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>0</integer> +      <integer>1</integer>      </map>      <key>WaterEditPresets</key>      <map> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 0e2507db5b..c8e8b9a221 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2596,6 +2596,8 @@ void LLAppViewer::handleViewerCrash()  {  	llinfos << "Handle viewer crash entry." << llendl; +	llinfos << "Last render pool type: " << LLPipeline::sCurRenderPoolType << llendl ; +  	//print out recorded call stacks if there are any.  	LLError::LLCallStacks::print(); @@ -3066,7 +3068,7 @@ bool LLAppViewer::initCache()  			gSavedSettings.getBOOL("PurgeCacheOnNextStartup"))  		{  			gSavedSettings.setBOOL("PurgeCacheOnNextStartup", false); -			mPurgeCache = true; +		mPurgeCache = true;  		}  		// We have moved the location of the cache directory over time. diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index c7c79401a0..c423473740 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -167,6 +167,8 @@ void LLViewerDynamicTexture::postRender(BOOL success)  			{  				generateGLTexture() ;  			} +			llcallstacks << "class type: " << (S32)getType() << llcallstacksendl ; +  			success = mGLTexturep->setSubImageFromFrameBuffer(0, 0, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight);  		}  	} diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h index 2a944eaada..caf2603519 100644 --- a/indra/newview/lldynamictexture.h +++ b/indra/newview/lldynamictexture.h @@ -41,6 +41,19 @@  class LLViewerDynamicTexture : public LLViewerTexture  { +public: +	enum +	{ +		LL_VIEWER_DYNAMIC_TEXTURE = LLViewerTexture::DYNAMIC_TEXTURE, +		LL_TEX_LAYER_SET_BUFFER = LLViewerTexture::INVALID_TEXTURE_TYPE + 1, +		LL_VISUAL_PARAM_HINT, +		LL_VISUAL_PARAM_RESET, +		LL_PREVIEW_ANIMATION, +		LL_IMAGE_PREVIEW_SCULPTED, +		LL_IMAGE_PREVIEW_AVATAR, +		INVALID_DYNAMIC_TEXTURE +	}; +  protected:  	/*virtual*/ ~LLViewerDynamicTexture(); diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 434c89e8ba..043f753e01 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -1068,6 +1068,12 @@ LLPreviewAnimation::~LLPreviewAnimation()  	mDummyAvatar->markDead();  } +//virtual +S8 LLPreviewAnimation::getType() const +{ +	return LLViewerDynamicTexture::LL_PREVIEW_ANIMATION ; +} +  //-----------------------------------------------------------------------------  // update()  //----------------------------------------------------------------------------- diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h index 3ee1f419ab..84f131a322 100644 --- a/indra/newview/llfloateranimpreview.h +++ b/indra/newview/llfloateranimpreview.h @@ -50,6 +50,8 @@ protected:  public:  	LLPreviewAnimation(S32 width, S32 height);	 +	/*virtual*/ S8 getType() const ; +  	BOOL	render();  	void	requestUpdate();  	void	rotate(F32 yaw_radians, F32 pitch_radians); diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index 6b754bd065..ef9da30552 100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp @@ -629,6 +629,11 @@ LLImagePreviewAvatar::~LLImagePreviewAvatar()  	mDummyAvatar->markDead();  } +//virtual +S8 LLImagePreviewAvatar::getType() const +{ +	return LLViewerDynamicTexture::LL_IMAGE_PREVIEW_AVATAR ; +}  void LLImagePreviewAvatar::setPreviewTarget(const std::string& joint_name, const std::string& mesh_name, LLImageRaw* imagep, F32 distance, BOOL male)   {  @@ -808,6 +813,11 @@ LLImagePreviewSculpted::~LLImagePreviewSculpted()  {  } +//virtual +S8 LLImagePreviewSculpted::getType() const +{ +	return LLViewerDynamicTexture::LL_IMAGE_PREVIEW_SCULPTED ; +}  void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)  {  diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h index 4a12543650..466bd1d0ec 100644 --- a/indra/newview/llfloaterimagepreview.h +++ b/indra/newview/llfloaterimagepreview.h @@ -54,6 +54,8 @@ protected:   public:  	LLImagePreviewSculpted(S32 width, S32 height);	 +	/*virtual*/ S8 getType() const ; +  	void setPreviewTarget(LLImageRaw *imagep, F32 distance);  	void setTexture(U32 name) { mTextureName = name; } @@ -85,6 +87,8 @@ protected:  public:  	LLImagePreviewAvatar(S32 width, S32 height);	 +	/*virtual*/ S8 getType() const ; +  	void setPreviewTarget(const std::string& joint_name, const std::string& mesh_name, LLImageRaw* imagep, F32 distance, BOOL male);  	void setTexture(U32 name) { mTextureName = name; }  	void clearPreviewTexture(const std::string& mesh_name); diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 24c72c65ce..454fd29fdc 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -352,20 +352,18 @@ void LLLoginInstance::updateApp(bool mandatory, const std::string& auth_msg)  	payload["mandatory"] = mandatory;  /* - We're constructing one of the following 6 strings here: + We're constructing one of the following 9 strings here:  	 "DownloadWindowsMandatory"  	 "DownloadWindowsReleaseForDownload"  	 "DownloadWindows"  	 "DownloadMacMandatory"  	 "DownloadMacReleaseForDownload"  	 "DownloadMac" +	 "DownloadLinuxMandatory" +	 "DownloadLinuxReleaseForDownload" +	 "DownloadLinux"   I've called them out explicitly in this comment so that they can be grepped for. -  - Also, we assume that if we're not Windows we're Mac. If we ever intend to support  - Linux with autoupdate, this should be an explicit #elif LL_DARWIN, but  - we'd rather deliver the wrong message than no message, so until Linux is supported - we'll leave it alone.   */  	std::string notification_name = "Download"; diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp index 7cde350d5a..4523bf2ba4 100644 --- a/indra/newview/llpopupview.cpp +++ b/indra/newview/llpopupview.cpp @@ -116,7 +116,6 @@ BOOL LLPopupView::handleMouseEvent(boost::function<BOOL(LLView*, S32, S32)> func  		if (!popup   			|| !predicate(popup))  		{ -			++popup_it;  			continue;  		} diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 3f4dab4fea..492fb2ad52 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -99,6 +99,12 @@ LLTexLayerSetBuffer::~LLTexLayerSetBuffer()  }  //virtual  +S8 LLTexLayerSetBuffer::getType() const  +{ +	return LLViewerDynamicTexture::LL_TEX_LAYER_SET_BUFFER ; +} + +//virtual   void LLTexLayerSetBuffer::restoreGLTexture()   {	  	LLViewerDynamicTexture::restoreGLTexture() ; diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h index 5be58f64a9..ae280dd063 100644 --- a/indra/newview/lltexlayer.h +++ b/indra/newview/lltexlayer.h @@ -325,6 +325,7 @@ public:  	LLTexLayerSetBuffer(LLTexLayerSet* const owner, S32 width, S32 height);  	virtual ~LLTexLayerSetBuffer(); +	/*virtual*/ S8          getType() const ;  	virtual void			preRender(BOOL clear_depth);  	virtual void			postRender(BOOL success);  	virtual BOOL			render(); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 969049ee65..22176c037f 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -108,6 +108,12 @@ LLVisualParamHint::~LLVisualParamHint()  	LLVisualParamHint::sInstances.erase( this );  } +//virtual +S8 LLVisualParamHint::getType() const +{ +	return LLViewerDynamicTexture::LL_VISUAL_PARAM_HINT ; +} +  //-----------------------------------------------------------------------------  // static  // requestHintUpdates() @@ -287,6 +293,12 @@ LLVisualParamReset::LLVisualParamReset() : LLViewerDynamicTexture(1, 1, 1, ORDER  {	  } +//virtual +S8 LLVisualParamReset::getType() const +{ +	return LLViewerDynamicTexture::LL_VISUAL_PARAM_RESET ; +} +  //-----------------------------------------------------------------------------  // render()  //----------------------------------------------------------------------------- diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h index b7df718ba2..c332c296bd 100644 --- a/indra/newview/lltoolmorph.h +++ b/indra/newview/lltoolmorph.h @@ -64,6 +64,8 @@ public:  		LLViewerVisualParam *param,  		F32 param_weight);	 +	/*virtual*/ S8 getType() const ; +  	BOOL					needsRender();  	void					preRender(BOOL clear_depth);  	BOOL					render(); @@ -107,6 +109,7 @@ protected:  public:  	LLVisualParamReset();  	/*virtual */ BOOL render(); +	/*virtual*/ S8 getType() const ;  	static BOOL sDirty;  }; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index c56b373138..8508b20689 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -2970,8 +2970,12 @@ void LLPipeline::renderHighlights()  	}  } +//debug use +U32 LLPipeline::sCurRenderPoolType = 0 ; +  void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)  { +	llpushcallstacks ;  	LLMemType mt(LLMemType::MTYPE_PIPELINE_RENDER_GEOM);  	LLFastTimer t(FTM_RENDER_GEOMETRY); @@ -3079,6 +3083,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)  			cur_type = poolp->getType(); +			//debug use +			sCurRenderPoolType = cur_type ; +  			if (occlude && cur_type >= LLDrawPool::POOL_GRASS)  			{  				occlude = FALSE; @@ -7164,6 +7171,7 @@ inline float sgn(float a)  void LLPipeline::generateWaterReflection(LLCamera& camera_in)  { +	llpushcallstacks ;  	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)  	{  		BOOL skip_avatar_update = FALSE; @@ -7898,7 +7906,7 @@ void LLPipeline::renderHighlight(const LLViewerObject* obj, F32 fade)  void LLPipeline::generateHighlight(LLCamera& camera)  {  	//render highlighted object as white into offscreen render target -	 +	llpushcallstacks ;  	if (mHighlightObject.notNull())  	{  		mHighlightSet.insert(HighlightItem(mHighlightObject)); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 6aecc23aac..60e0b0ae8c 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -686,6 +686,9 @@ protected:  public:  	static BOOL				sRenderBeacons;  	static BOOL				sRenderHighlight; + +	//debug use +	static U32              sCurRenderPoolType ;  };  void render_bbox(const LLVector3 &min, const LLVector3 &max); diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml index 9dff4abe2c..cb6b2f6ebc 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml @@ -333,66 +333,86 @@ Maximum animation length is [MAX_LENGTH] seconds.       left_pad="20"       name="emote_combo"       tool_tip="Controls what face does during animation"> -        <combo_box.item -         label="(None)" -         name="[None]" /> -        <combo_box.item -         label="Aaaaah" -         name="Aaaaah" /> -        <combo_box.item -         label="Afraid" -         name="Afraid" /> -        <combo_box.item -         label="Angry" -         name="Angry" /> -        <combo_box.item -         label="Big Smile" -         name="BigSmile" /> -        <combo_box.item -         label="Bored" -         name="Bored" /> -        <combo_box.item -         label="Cry" -         name="Cry" /> -        <combo_box.item -         label="Disdain" -         name="Disdain" /> -        <combo_box.item -         label="Embarrassed" -         name="Embarrassed" /> -        <combo_box.item -         label="Frown" -         name="Frown" /> -        <combo_box.item -         label="Kiss" -         name="Kiss" /> -        <combo_box.item -         label="Laugh" -         name="Laugh" /> -        <combo_box.item -         label="Plllppt" -         name="Plllppt" /> -        <combo_box.item -         label="Repulsed" -         name="Repulsed" /> -        <combo_box.item -         label="Sad" -         name="Sad" /> -        <combo_box.item -         label="Shrug" -         name="Shrug" /> -        <combo_box.item -         label="Smile" -         name="Smile" /> -        <combo_box.item -         label="Surprise" -         name="Surprise" /> -        <combo_box.item -         label="Wink" -         name="Wink" /> -        <combo_box.item -         label="Worry" -         name="Worry" /> +      <item +       label="(None)" +       value="" +       name="[None]" /> +      <item +       label="Aaaaah" +       value="Aaaaah" +       name="Aaaaah" /> +      <item +       label="Afraid" +       value="Afraid" +       name="Afraid" /> +      <item +       label="Angry" +       value="Angry" +       name="Angry" /> +      <item +       label="Big Smile" +       value="Big Smile" +       name="BigSmile" /> +      <item +       label="Bored" +       value="Bored" +       name="Bored" /> +      <item +       label="Cry" +       value="Cry" +       name="Cry" /> +      <item +       label="Disdain" +       value="Disdain" +       name="Disdain" /> +      <item +       label="Embarrassed" +       value="Embarrassed" +       name="Embarrassed" /> +      <item +       label="Frown" +       value="Frown" +       name="Frown" /> +      <item +       label="Kiss" +       value="Kiss" +       name="Kiss" /> +      <item +       label="Laugh" +       value="Laugh" +       name="Laugh" /> +      <item +       label="Plllppt" +       value="Plllppt" +       name="Plllppt" /> +      <item +       label="Repulsed" +       value="Repulsed" +       name="Repulsed" /> +      <item +       label="Sad" +       value="Sad" +       name="Sad" /> +      <item +       label="Shrug" +       value="Shrug" +       name="Shrug" /> +      <item +       label="Smile" +       value="Smile"  +       name="Smile" /> +      <item +       label="Surprise" +       value="Surprise"  +       name="Surprise" /> +      <item +       label="Wink" +       value="Wink" +       name="Wink" /> +      <item +       label="Worry" +       value="Worry" +       name="Worry" />      </combo_box>      <text       type="string" @@ -414,17 +434,21 @@ Maximum animation length is [MAX_LENGTH] seconds.       left_pad="20"       name="preview_base_anim"       tool_tip="Use this to test your animation behavior while your avatar performs common actions."> -        <combo_box.item +        <item           label="Standing" +         value="Standing"           name="Standing" /> -        <combo_box.item +        <item           label="Walking" +         value="Walking"           name="Walking" /> -        <combo_box.item +        <item           label="Sitting" +         value="Sitting"           name="Sitting" /> -        <combo_box.item +        <item           label="Flying" +         value="Flying"           name="Flying" />      </combo_box>      <spinner diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml index 6f8f272128..86232de1a4 100644 --- a/indra/newview/skins/default/xui/en/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml @@ -64,35 +64,45 @@       name="clothing_type_combo"       top_delta="3"       width="160"> -        <combo_box.item +        <item           label="Image" +         value="Image"           name="Image" /> -        <combo_box.item +        <item           label="Hair" +         value="Hair"           name="Hair" /> -        <combo_box.item +        <item           label="Female Head" +         value="Female Head"           name="FemaleHead" /> -        <combo_box.item +        <item           label="Female Upper Body" +         value="Female Upper Body"           name="FemaleUpperBody" /> -        <combo_box.item +        <item           label="Female Lower Body" +         value="Female Lower Body"           name="FemaleLowerBody" /> -        <combo_box.item +        <item           label="Male Head" +         value="Male Head"           name="MaleHead" /> -        <combo_box.item +        <item           label="Male Upper Body" +         value="Male Upper Body"           name="MaleUpperBody" /> -        <combo_box.item +        <item           label="Male Lower Body" +         value="Male Lower Body"           name="MaleLowerBody" /> -        <combo_box.item +        <item           label="Skirt" +         value="Skirt"           name="Skirt" /> -        <combo_box.item +        <item           label="Sculpted Prim" +         value="Sculpted Prim"           name="SculptedPrim" />      </combo_box>      <text diff --git a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml index 36e7e40e59..c9d639d8cf 100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml @@ -11,9 +11,9 @@  	<check_box label="Sonidos" name="check_sound"/>  	<check_box label="Texturas" name="check_texture"/>  	<check_box label="Fotos" name="check_snapshot"/> -	<button label="Todos" label_selected="Todo" name="All" width="70"/> -	<button label="Ninguno" label_selected="Nada" name="None" width="70" bottom_delta="0" left="83"/> -	<check_box label="Mostrar siempre las
carpetas" name="check_show_empty"/> +	<button label="Todos" label_selected="Todo" name="All"/> +	<button label="Ninguno" label_selected="Nada" name="None"/> +	<check_box label="Mostrar siempre las carpetas" name="check_show_empty"/>  	<check_box label="Desde el fin de sesión" name="check_since_logoff" bottom_delta="-36"/>  	<text name="- OR -">  		- o - diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml index 87e7dc1e8a..56d473e872 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -52,7 +52,7 @@  			m  		</text>  		<slider label="Núm. máx. de partículas:" name="MaxParticleCount"/> -		<slider label="Calidad de procesamiento:" label_width="142" name="RenderPostProcess"/> +		<slider label="Calidad de procesamiento:" name="RenderPostProcess"/>  		<text name="MeshDetailText">  			Detalle de la malla:  		</text> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml index 6cd886d4b9..1ee85a77ce 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml @@ -11,14 +11,14 @@  	<check_box label="Sons" name="check_sound"/>  	<check_box label="Textures" name="check_texture"/>  	<check_box label="Photos" name="check_snapshot"/> -	<button label="Tout" label_selected="Tout" name="All" width="70"/> -	<button bottom_delta="0" label="Aucun" label_selected="Aucun" left="83" name="None" width="70"/> -	<check_box bottom_delta="-20" label="Toujours montrer les dossiers" name="check_show_empty"/> -	<check_box bottom_delta="-36" label="Depuis la déconnexion" name="check_since_logoff"/> +	<button label="Tout" label_selected="Tout" name="All"/> +	<button bottom_delta="0" label="Aucun" label_selected="Aucun" name="None"/> +	<check_box label="Toujours montrer les dossiers" name="check_show_empty"/> +	<check_box label="Depuis la déconnexion" name="check_since_logoff"/>  	<text name="- OR -">  		Ou il y a...  	</text>  	<spinner label="Heures" name="spin_hours_ago"/>  	<spinner label="Jours" name="spin_days_ago"/> -	<button bottom_delta="-30" label="Fermer" label_selected="Fermer" name="Close"/> +	<button label="Fermer" label_selected="Fermer" name="Close"/>  </floater> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml index b5a17b2fc1..49130285f2 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml @@ -1,5 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory Finder" title="INVENTARIO_COSE_RECENTI" width="165"> +<floater name="Inventory Finder" title="INVENTARIO_COSE_RECENTI">  	<check_box label="Animazioni" name="check_animation"/>  	<check_box label="Biglietti da visita" name="check_calling_card"/>  	<check_box label="Abiti" name="check_clothing"/> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml index 57cdd50dcc..d21e574011 100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml @@ -1,5 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory Finder" title="ITENS_DE_INVENTÁRIO_RECENTES" width="165"> +<floater name="Inventory Finder" title="ITENS_DE_INVENTÁRIO_RECENTES">  	<check_box label="Animação" name="check_animation"/>  	<check_box label="Cartões de chamadas" name="check_calling_card"/>  	<check_box label="Roupas" name="check_clothing"/> @@ -13,8 +13,8 @@  	<check_box label="Fotos" name="check_snapshot"/>  	<button label="Tudo" label_selected="Tudo" name="All"/>  	<button label="Nenhum" label_selected="Nenhum" name="None"/> -	<check_box label="Sempre mostrar as pastas" name="check_show_empty" left="3"/> -	<check_box label="Desde o Logoff" name="check_since_logoff" left="3"/> +	<check_box label="Sempre mostrar as pastas" name="check_show_empty"/> +	<check_box label="Desde o Logoff" name="check_since_logoff"/>  	<text name="- OR -">  		- OU -  	</text> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml index 121272bf6c..eb38323940 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml @@ -48,12 +48,12 @@ rápido  		<check_box initial_value="true" label="Atributos do Avatar" name="AvatarImpostors"/>  		<check_box initial_value="true" label="Melhoria de Hardware" name="AvatarVertexProgram"/>  		<check_box initial_value="true" label="Vestimenta do Avatar" name="AvatarCloth"/> -		<slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/> +		<slider label="Distancia de desenho:" name="DrawDistance"/>  		<text name="DrawDistanceMeterText2">  			m  		</text> -		<slider label="Contador máx. de partículas:" label_width="150" name="MaxParticleCount" width="262"/> -		<slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/> +		<slider label="Contador máx. de partículas:" name="MaxParticleCount"/> +		<slider label="Qualidade de Pós-processamento:" name="RenderPostProcess"/>  		<text name="MeshDetailText">  			Detalhes de Malha:  		</text> @@ -94,13 +94,13 @@ rápido  		<text name="TerrainDetailText">  			Detalhe do Terreno:  		</text> -		<radio_group left_delta="45" name="TerrainDetailRadio" width="276"> +		<radio_group left_delta="45" name="TerrainDetailRadio">  			<radio_item label="Baixo" name="0"/>  			<radio_item label="Alto" name="2"/>  		</radio_group>  	</panel>  	<button label="Aplicar" label_selected="Aplicar" name="Apply"/> -	<button label="Redefinir" left="110" name="Defaults" width="190"/> +	<button label="Redefinir" left="110" name="Defaults"/>  	<button label="Avançado" name="Advanced"/>  	<button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>  </panel> | 
