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> |