summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorSteven Bennetts <steve@lindenlab.com>2008-05-09 20:57:23 +0000
committerSteven Bennetts <steve@lindenlab.com>2008-05-09 20:57:23 +0000
commit783e05058c5d74984ab554fdc60aa06839b9b5c9 (patch)
treeb40ca6762c7546b65db3966c04ef545a23643f21 /indra
parentdbe0176552e070baef9a693252cb47dda97d1fb4 (diff)
QAR-537 Viewer 1.20 RC 6
merge -r 86279:86925 Branch_1-20-Viewer -> release
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/llversionviewer.h2
-rw-r--r--indra/llrender/llimagegl.cpp59
-rw-r--r--indra/llrender/llvertexbuffer.cpp2
-rw-r--r--indra/llui/llscrolllistctrl.cpp6
-rw-r--r--indra/llui/llspinctrl.cpp12
-rw-r--r--indra/llui/llspinctrl.h2
-rw-r--r--indra/llui/lluictrlfactory.cpp17
-rw-r--r--indra/llui/lluictrlfactory.h4
-rw-r--r--indra/newview/app_settings/settings.xml2
-rw-r--r--indra/newview/llappviewer.cpp10
-rw-r--r--indra/newview/lldrawpoolterrain.cpp9
-rw-r--r--indra/newview/llfloatergroups.cpp2
-rw-r--r--indra/newview/llfloaterproperties.cpp33
-rw-r--r--indra/newview/llfloaterproperties.h4
-rw-r--r--indra/newview/llfloatersnapshot.cpp28
-rw-r--r--indra/newview/llhudobject.cpp1
-rw-r--r--indra/newview/llviewerjoystick.cpp30
-rw-r--r--indra/newview/llviewermenu.cpp5
-rw-r--r--indra/newview/llviewermenufile.cpp34
-rw-r--r--indra/newview/llviewermessage.cpp6
-rw-r--r--indra/newview/llviewerobjectlist.cpp1
-rw-r--r--indra/newview/llviewerparcelmedia.cpp6
-rw-r--r--indra/newview/llviewerparceloverlay.cpp43
-rw-r--r--indra/newview/llvoavatar.cpp9
-rw-r--r--indra/newview/pipeline.cpp7
25 files changed, 238 insertions, 96 deletions
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 9b4d4ff0a2..d4bbef7e13 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -34,7 +34,7 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 20;
-const S32 LL_VERSION_PATCH = 5;
+const S32 LL_VERSION_PATCH = 6;
const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Second Life Release";
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index a7bfe64f92..55fa48f437 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -1044,8 +1044,8 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
S32 gl_discard = discard_level - mCurrentDiscardLevel;
- llverify(bindTextureInternal(0));
-
+ llverify(bindTextureInternal(0));
+
LLGLint glwidth = 0;
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_WIDTH, (GLint*)&glwidth);
if (glwidth == 0)
@@ -1067,40 +1067,63 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
llerrs << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << llendl;
}
- BOOL return_result = TRUE ;
LLGLint is_compressed = 0;
if (compressed_ok)
{
glGetTexLevelParameteriv(mTarget, is_compressed, GL_TEXTURE_COMPRESSED, (GLint*)&is_compressed);
}
+
+ //-----------------------------------------------------------------------------------------------
+ GLenum error ;
+ while((error = glGetError()) != GL_NO_ERROR)
+ {
+ llwarns << "GL Error happens before reading back texture. Error code: " << error << llendl ;
+ }
+ //-----------------------------------------------------------------------------------------------
+
if (is_compressed)
{
LLGLint glbytes;
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, (GLint*)&glbytes);
- imageraw->allocateDataSize(width, height, ncomponents, glbytes);
- glGetCompressedTexImageARB(mTarget, gl_discard, (GLvoid*)(imageraw->getData()));
- if(glGetError() != GL_NO_ERROR)
+ if(!imageraw->allocateDataSize(width, height, ncomponents, glbytes))
{
- llwarns << "Error happens when reading back the compressed texture image." << llendl ;
- imageraw->deleteData() ;
- return_result = FALSE ;
+ llwarns << "Memory allocation failed for reading back texture. Size is: " << glbytes << llendl ;
+ llwarns << "width: " << width << "height: " << height << "components: " << ncomponents << llendl ;
+ return FALSE ;
}
- stop_glerror();
+
+ glGetCompressedTexImageARB(mTarget, gl_discard, (GLvoid*)(imageraw->getData()));
+ //stop_glerror();
}
else
{
- imageraw->allocateDataSize(width, height, ncomponents);
- glGetTexImage(GL_TEXTURE_2D, gl_discard, mFormatPrimary, mFormatType, (GLvoid*)(imageraw->getData()));
- if(glGetError() != GL_NO_ERROR)
+ if(!imageraw->allocateDataSize(width, height, ncomponents))
{
- llwarns << "Error happens when reading back the texture image." << llendl ;
- imageraw->deleteData() ;
- return_result = FALSE ;
+ llwarns << "Memory allocation failed for reading back texture." << llendl ;
+ llwarns << "width: " << width << "height: " << height << "components: " << ncomponents << llendl ;
+ return FALSE ;
}
- stop_glerror();
+
+ glGetTexImage(GL_TEXTURE_2D, gl_discard, mFormatPrimary, mFormatType, (GLvoid*)(imageraw->getData()));
+ //stop_glerror();
}
- return return_result ;
+ //-----------------------------------------------------------------------------------------------
+ if((error = glGetError()) != GL_NO_ERROR)
+ {
+ llwarns << "GL Error happens after reading back texture. Error code: " << error << llendl ;
+ imageraw->deleteData() ;
+
+ while((error = glGetError()) != GL_NO_ERROR)
+ {
+ llwarns << "GL Error happens after reading back texture. Error code: " << error << llendl ;
+ }
+
+ return FALSE ;
+ }
+ //-----------------------------------------------------------------------------------------------
+
+ return TRUE ;
}
void LLImageGL::destroyGLTexture()
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 5a1079ac15..2f053a6493 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -232,7 +232,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
llerrs << "Bad vertex buffer draw range: [" << first << ", " << first+count << "]" << llendl;
}
- if (mGLBuffer != sGLRenderBuffer)
+ if (mGLBuffer != sGLRenderBuffer || useVBOs() != sVBOActive)
{
llerrs << "Wrong vertex buffer bound." << llendl;
}
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 4e640eac2a..05888fe382 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -1117,9 +1117,7 @@ BOOL LLScrollListCtrl::selectItemRange( S32 first_index, S32 last_index )
if( itemp->getEnabled() )
{
selectItem(itemp, FALSE);
- success = TRUE;
- if (!success)
- mOriginalSelection = first_index;
+ success = TRUE;
}
}
else
@@ -1198,7 +1196,7 @@ void LLScrollListCtrl::deleteItems(const LLSD& sd)
mLastSelected = NULL;
}
delete itemp;
- mItemList.erase(iter++);
+ iter = mItemList.erase(iter);
}
else
{
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index a39b74a610..36b84c741f 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -249,6 +249,18 @@ void LLSpinCtrl::setValue(const LLSD& value )
}
}
+//no matter if Editor has the focus, update the value
+void LLSpinCtrl::forceSetValue(const LLSD& value )
+{
+ F32 v = (F32)value.asReal();
+ if (mValue != v || !mbHasBeenSet)
+ {
+ mbHasBeenSet = TRUE;
+ mValue = v;
+
+ updateEditor();
+ }
+}
void LLSpinCtrl::clear()
{
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
index 21d297fa16..eb9c60d442 100644
--- a/indra/llui/llspinctrl.h
+++ b/indra/llui/llspinctrl.h
@@ -66,6 +66,7 @@ public:
virtual LLXMLNodePtr getXML(bool save_children = true) const;
static LLView* fromXML(LLXMLNodePtr node, LLView *parent, class LLUICtrlFactory *factory);
+ virtual void forceSetValue(const LLSD& value ) ;
virtual void setValue(const LLSD& value );
virtual LLSD getValue() const { return mValue; }
F32 get() const { return (F32)getValue().asReal(); }
@@ -87,6 +88,7 @@ public:
virtual void setIncrement(F32 inc) { mIncrement = inc; }
virtual F32 getMinValue() { return mMinValue ; }
virtual F32 getMaxValue() { return mMaxValue ; }
+ virtual F32 getIncrement() { return mIncrement ; }
void setLabel(const LLStringExplicit& label);
void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; }
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index c75c6714f8..c2dc9a1e90 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -104,10 +104,17 @@ static LLRegisterWidget<LLUICtrlLocate> r2("pad");
// LLUICtrlFactory()
//-----------------------------------------------------------------------------
LLUICtrlFactory::LLUICtrlFactory()
+ : mDummyPanel(NULL)
{
setupPaths();
}
+LLUICtrlFactory::~LLUICtrlFactory()
+{
+ delete mDummyPanel;
+ mDummyPanel = NULL;
+}
+
void LLUICtrlFactory::setupPaths()
{
LLString filename = gDirUtilp->getExpandedFilename(LL_PATH_SKINS, "paths.xml");
@@ -428,10 +435,6 @@ void LLUICtrlFactory::rebuild()
LLView *LLUICtrlFactory::createCtrlWidget(LLPanel *parent, LLXMLNodePtr node)
{
- // panel for holding dummy widgets, so they have a parent for layout purposes, etc.
- // does not manage lifetime of child widgets
- static LLPanel dummy_panel;
-
LLString ctrl_type = node->getName()->mString;
LLString::toLower(ctrl_type);
@@ -445,7 +448,11 @@ LLView *LLUICtrlFactory::createCtrlWidget(LLPanel *parent, LLXMLNodePtr node)
if (parent == NULL)
{
- parent = &dummy_panel;
+ if (mDummyPanel == NULL)
+ {
+ mDummyPanel = new LLPanel;
+ }
+ parent = mDummyPanel;
}
LLView *ctrl = func(node, parent, this);
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 651bfa7b88..cd4fa8cacf 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -46,7 +46,7 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
public:
LLUICtrlFactory();
// do not call! needs to be public so run-time can clean up the singleton
- virtual ~LLUICtrlFactory() {}
+ virtual ~LLUICtrlFactory();
void setupPaths();
@@ -88,6 +88,8 @@ private:
std::deque<const LLCallbackMap::map_t*> mFactoryStack;
static std::vector<LLString> mXUIPaths;
+
+ LLPanel* mDummyPanel;
};
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 773e71a369..2d391c4416 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2840,7 +2840,7 @@
<key>Comment</key>
<string>Whether or not a joystick has been detected and initiailized.</string>
<key>Persist</key>
- <integer>0</integer>
+ <integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 1ad37f239c..b8adfe5477 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -875,15 +875,7 @@ bool LLAppViewer::init()
gSimFrames = (F32)gFrameCount;
LLViewerJoystick::getInstance()->init(false);
- if (LLViewerJoystick::getInstance()->isLikeSpaceNavigator())
- {
- if (gSavedSettings.getString("JoystickInitialized") != "SpaceNavigator")
- {
- LLFloaterJoystick::setSNDefaults();
- gSavedSettings.setString("JoystickInitialized", "SpaceNavigator");
- }
- }
-
+
return true;
}
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 4747043c78..c60ddbc517 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -357,7 +357,7 @@ void LLDrawPoolTerrain::renderFullShader()
void LLDrawPoolTerrain::renderFull4TU()
{
- glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
// Hack! Get the region that this draw pool is rendering from!
@@ -388,8 +388,7 @@ void LLDrawPoolTerrain::renderFull4TU()
glActiveTextureARB(GL_TEXTURE0_ARB);
LLViewerImage::bindTexture(detail_texture0p,0);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
-
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -467,6 +466,8 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
glActiveTextureARB(GL_TEXTURE0_ARB);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
+
// GL_BLEND disabled by default
drawLoop();
@@ -576,11 +577,13 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
glActiveTextureARB(GL_TEXTURE0_ARB);
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
{
LLGLEnable blend(GL_BLEND);
drawLoop();
}
+ LLVertexBuffer::unbind();
// Disable multitexture
LLImageGL::unbindTexture(3, GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE3_ARB);
diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp
index 26ed03951c..d67ae2de2d 100644
--- a/indra/newview/llfloatergroups.cpp
+++ b/indra/newview/llfloatergroups.cpp
@@ -466,7 +466,7 @@ void init_group_list(LLScrollListCtrl* ctrl, const LLUUID& highlight_id, U64 pow
LLSD element;
element["id"] = LLUUID::null;
element["columns"][0]["column"] = "name";
- element["columns"][0]["value"] = "none";
+ element["columns"][0]["value"] = "none"; // *TODO: Translate
element["columns"][0]["font"] = "SANSSERIF";
element["columns"][0]["font-style"] = style;
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index bea12fe017..74a880e010 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -65,11 +65,21 @@
// helper class to watch the inventory.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLPropertiesObserver : public LLInventoryObserver, public LLSingleton<LLPropertiesObserver>
+// Ugh. This can't be a singleton because it needs to remove itself
+// from the inventory observer list when destroyed, which could
+// happen after gInventory has already been destroyed if a singleton.
+// Instead, do our own ref counting and create / destroy it as needed
+class LLPropertiesObserver : public LLInventoryObserver
{
public:
- LLPropertiesObserver() {}
- virtual ~LLPropertiesObserver() {}
+ LLPropertiesObserver()
+ {
+ gInventory.addObserver(this);
+ }
+ virtual ~LLPropertiesObserver()
+ {
+ gInventory.removeObserver(this);
+ }
virtual void changed(U32 mask);
};
@@ -88,7 +98,10 @@ void LLPropertiesObserver::changed(U32 mask)
/// Class LLFloaterProperties
///----------------------------------------------------------------------------
+// static
LLFloaterProperties::instance_map LLFloaterProperties::sInstances;
+LLPropertiesObserver* LLFloaterProperties::sPropertiesObserver = NULL;
+S32 LLFloaterProperties::sPropertiesObserverCount = 0;
// static
LLFloaterProperties* LLFloaterProperties::find(const LLUUID& item_id,
@@ -145,12 +158,12 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect&
{
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml");
- // hack to make sure these floaters are observing the inventory.
- if(!gInventory.containsObserver(LLPropertiesObserver::getInstance()))
+ if (!sPropertiesObserver)
{
- // Note: this is where gPropertiesObserver used to be constructed.
- gInventory.addObserver(LLPropertiesObserver::getInstance());
+ sPropertiesObserver = new LLPropertiesObserver;
}
+ sPropertiesObserverCount++;
+
// add the object to the static structure
LLUUID key = mItemID ^ mObjectID;
sInstances.insert(instance_map::value_type(key, this));
@@ -193,6 +206,12 @@ LLFloaterProperties::~LLFloaterProperties()
{
sInstances.erase(it);
}
+ sPropertiesObserverCount--;
+ if (!sPropertiesObserverCount)
+ {
+ delete sPropertiesObserver;
+ sPropertiesObserver = NULL;
+ }
}
void LLFloaterProperties::refresh()
diff --git a/indra/newview/llfloaterproperties.h b/indra/newview/llfloaterproperties.h
index 7b1cb5d77c..8f96bf7078 100644
--- a/indra/newview/llfloaterproperties.h
+++ b/indra/newview/llfloaterproperties.h
@@ -47,6 +47,8 @@ class LLLineEditor;
class LLRadioGroup;
class LLTextBox;
+class LLPropertiesObserver;
+
class LLFloaterProperties : public LLFloater
{
public:
@@ -94,6 +96,8 @@ protected:
typedef std::map<LLUUID, LLFloaterProperties*, lluuid_less> instance_map;
static instance_map sInstances;
+ static LLPropertiesObserver* sPropertiesObserver;
+ static S32 sPropertiesObserverCount;
};
class LLMultiProperties : public LLMultiFloater
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 7950b127f0..b2301808a1 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1694,13 +1694,13 @@ void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32
LLSpinCtrl *sctrl = view->getChild<LLSpinCtrl>("snapshot_width") ;
if(sctrl)
{
- sctrl->setValue(width) ;
+ sctrl->forceSetValue(width) ;
}
sctrl = view->getChild<LLSpinCtrl>("snapshot_height") ;
if(sctrl)
{
- sctrl->setValue(height) ;
+ sctrl->forceSetValue(height) ;
}
gSavedSettings.setS32("LastSnapshotWidth", width);
@@ -1727,8 +1727,30 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat
if (w != curw || h != curh)
{
+ BOOL update_ = FALSE ;
+ //if to upload a snapshot, process spinner input in a special way.
+ if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType"))
+ {
+ S32 spinner_increment = (S32)((LLSpinCtrl*)ctrl)->getIncrement() ;
+ S32 dw = w - curw ;
+ S32 dh = h - curh ;
+ dw = (dw == spinner_increment) ? 1 : ((dw == -spinner_increment) ? -1 : 0) ;
+ dh = (dh == spinner_increment) ? 1 : ((dh == -spinner_increment) ? -1 : 0) ;
+
+ if(dw)
+ {
+ w = (dw > 0) ? curw << dw : curw >> -dw ;
+ update_ = TRUE ;
+ }
+ if(dh)
+ {
+ h = (dh > 0) ? curh << dh : curh >> -dh ;
+ update_ = TRUE ;
+ }
+ }
+
previewp->setMaxImageSize((S32)((LLSpinCtrl *)ctrl)->getMaxValue()) ;
- if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize()))
+ if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize()) || update_)
{
resetSnapshotSizeOnUI(view, w, h) ;
}
diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp
index 07b0379f7a..136974df2e 100644
--- a/indra/newview/llhudobject.cpp
+++ b/indra/newview/llhudobject.cpp
@@ -282,7 +282,6 @@ void LLHUDObject::renderAll()
}
}
- // cleanup any leftover client state, etc
LLVertexBuffer::unbind();
}
diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp
index c109ca10a0..1717153810 100644
--- a/indra/newview/llviewerjoystick.cpp
+++ b/indra/newview/llviewerjoystick.cpp
@@ -228,8 +228,38 @@ void LLViewerJoystick::init(bool autoenable)
mDriverState = JDS_UNINITIALIZED;
}
}
+
+ // Autoenable the joystick for recognized devices if nothing was connected previously
+ if (!autoenable)
+ {
+ autoenable = gSavedSettings.getString("JoystickInitialized").empty() ? true : false;
+ }
updateEnabled(autoenable);
+ if (mDriverState == JDS_INITIALIZED)
+ {
+ // A Joystick device is plugged in
+ if (isLikeSpaceNavigator())
+ {
+ // It's a space navigator, we have defaults for it.
+ if (gSavedSettings.getString("JoystickInitialized") != "SpaceNavigator")
+ {
+ // Only set the defaults if we haven't already (in case they were overridden)
+ setSNDefaults();
+ gSavedSettings.setString("JoystickInitialized", "SpaceNavigator");
+ }
+ }
+ else
+ {
+ // It's not a Space Navigator
+ gSavedSettings.setString("JoystickInitialized", "UnknownDevice");
+ }
+ }
+ else
+ {
+ // No device connected, don't change any settings
+ }
+
llinfos << "ndof: mDriverState=" << mDriverState << "; mNdofDev="
<< mNdofDev << "; libinit=" << libinit << llendl;
#endif
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index e32564faa6..c4cd7a3a3d 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1064,7 +1064,7 @@ void init_client_menu(LLMenuGL* menu)
menu->appendSeparator();
- menu->append(new LLMenuItemCallGL("Compress Image...",
+ menu->append(new LLMenuItemCallGL("Compress Images...",
&handle_compress_image, NULL, NULL));
menu->append(new LLMenuItemCheckGL("Limit Select Distance",
@@ -1507,7 +1507,8 @@ void init_debug_avatar_menu(LLMenuGL* menu)
menu->append(new LLMenuItemToggleGL("Disable LOD", &LLViewerJoint::sDisableLOD));
menu->append(new LLMenuItemToggleGL("Debug Character Vis", &LLVOAvatar::sDebugInvisible));
//menu->append(new LLMenuItemToggleGL("Show Attachment Points", &LLVOAvatar::sShowAttachmentPoints));
- menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane));
+ //diabling collision plane due to DEV-14477 -brad
+ //menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane));
menu->append(new LLMenuItemToggleGL("Show Collision Skeleton", &LLVOAvatar::sShowCollisionVolumes));
menu->append(new LLMenuItemToggleGL( "Display Agent Target", &LLAgent::sDebugDisplayTarget));
menu->append(new LLMenuItemToggleGL( "Debug Rotation", &gDebugAvatarRotation));
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 864c1dd570..9dc3208adb 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -436,25 +436,31 @@ void handle_upload(void* data)
void handle_compress_image(void*)
{
LLFilePicker& picker = LLFilePicker::instance();
- if (picker.getOpenFile(LLFilePicker::FFLOAD_IMAGE))
+ if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE))
{
- std::string infile(picker.getFirstFile());
- std::string outfile = infile + ".j2c";
+ const char* input_file = picker.getFirstFile();
+ while (input_file)
+ {
+ std::string infile(input_file);
+ std::string outfile = infile + ".j2c";
- llinfos << "Input: " << infile << llendl;
- llinfos << "Output: " << outfile << llendl;
+ llinfos << "Input: " << infile << llendl;
+ llinfos << "Output: " << outfile << llendl;
- BOOL success;
+ BOOL success;
- success = LLViewerImageList::createUploadFile(infile, outfile, IMG_CODEC_TGA);
+ success = LLViewerImageList::createUploadFile(infile, outfile, IMG_CODEC_TGA);
- if (success)
- {
- llinfos << "Compression complete" << llendl;
- }
- else
- {
- llinfos << "Compression failed: " << LLImageBase::getLastError() << llendl;
+ if (success)
+ {
+ llinfos << "Compression complete" << llendl;
+ }
+ else
+ {
+ llinfos << "Compression failed: " << LLImageBase::getLastError() << llendl;
+ }
+
+ input_file = picker.getNextFile();
}
}
}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 577e76b957..3b2b82e1f9 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1823,7 +1823,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
break;
case IM_BUSY_AUTO_RESPONSE:
- // fix for JIRA issue VWR-20 submitted 13-JAN-2007 - Paul Churchill
if (is_muted)
{
lldebugs << "Ignoring busy response from " << from_id << llendl;
@@ -1831,8 +1830,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
else
{
- // original code resumes
- gIMMgr->addMessage(session_id, from_id, name, message);
+ // TODO: after LLTrans hits release, get "busy response" into translatable file
+ snprintf(buffer, sizeof(buffer), "%s (%s): %s", name, "busy response", (message+message_offset)); /* Flawfinder: ignore */
+ gIMMgr->addMessage(session_id, from_id, name, buffer);
}
break;
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 8398c3c9d7..b902599e88 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1212,6 +1212,7 @@ U32 LLViewerObjectList::renderObjectsForSelect(LLCamera &camera, BOOL pick_parce
// render pickable ui elements, like names, etc.
LLHUDObject::renderAllForSelect();
gGL.flush();
+ LLVertexBuffer::unbind();
gRenderForSelect = FALSE;
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index 2b475ce9f9..0259d4896c 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -103,6 +103,12 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
// we're in a parcel
bool new_parcel = false;
S32 parcelid = parcel->getLocalID();
+
+ if(!gAgent.getRegion())
+ {
+ llerrs << "gAgent's region is NULL." << llendl ;
+ }
+
LLUUID regionid = gAgent.getRegion()->getRegionID();
if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID)
{
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp
index d190d2f12c..342d8c7222 100644
--- a/indra/newview/llviewerparceloverlay.cpp
+++ b/indra/newview/llviewerparceloverlay.cpp
@@ -48,6 +48,8 @@
#include "llagent.h"
#include "llviewercamera.h"
#include "llviewerimagelist.h"
+#include "llselectmgr.h"
+#include "llfloatertools.h"
#include "llglheaders.h"
const U8 OVERLAY_IMG_COMPONENTS = 4;
@@ -839,31 +841,34 @@ S32 LLViewerParcelOverlay::renderPropertyLines ()
gGL.end();
- LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER);
-
- colorp = mColorArray + BYTES_PER_COLOR * i;
- vertexp = mVertexArray + FLOATS_PER_VERTEX * i;
+ if (LLSelectMgr::sRenderHiddenSelections && gFloaterTools && gFloaterTools->getVisible())
+ {
+ LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER);
+
+ colorp = mColorArray + BYTES_PER_COLOR * i;
+ vertexp = mVertexArray + FLOATS_PER_VERTEX * i;
- gGL.begin(LLVertexBuffer::TRIANGLE_STRIP);
+ gGL.begin(LLVertexBuffer::TRIANGLE_STRIP);
- for (j = 0; j < vertex_per_edge; j++)
- {
- U8 color[4];
- color[0] = colorp[0];
- color[1] = colorp[1];
- color[2] = colorp[2];
- color[3] = colorp[3]/4;
+ for (j = 0; j < vertex_per_edge; j++)
+ {
+ U8 color[4];
+ color[0] = colorp[0];
+ color[1] = colorp[1];
+ color[2] = colorp[2];
+ color[3] = colorp[3]/4;
- gGL.color4ubv(color);
- gGL.vertex3fv(vertexp);
+ gGL.color4ubv(color);
+ gGL.vertex3fv(vertexp);
- colorp += BYTES_PER_COLOR;
- vertexp += FLOATS_PER_VERTEX;
- }
+ colorp += BYTES_PER_COLOR;
+ vertexp += FLOATS_PER_VERTEX;
+ }
- drawn += vertex_per_edge;
+ drawn += vertex_per_edge;
- gGL.end();
+ gGL.end();
+ }
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 292fa83918..d7dfd8ac4a 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4048,7 +4048,10 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
}
// render collision normal
- if (sShowFootPlane && mDrawable.notNull())
+ // *NOTE: this is disabled (there is no UI for enabling sShowFootPlane) due
+ // to DEV-14477. the code is left here to aid in tracking down the cause
+ // of the crash in the future. -brad
+ if (!gRenderForSelect && sShowFootPlane && mDrawable.notNull())
{
LLVector3 slaved_pos = mDrawable->getPositionAgent();
LLVector3 foot_plane_normal(mFootPlane.mV[VX], mFootPlane.mV[VY], mFootPlane.mV[VZ]);
@@ -4076,7 +4079,9 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
gGL.vertex3f(collide_point.mV[VX], collide_point.mV[VY], collide_point.mV[VZ]);
gGL.vertex3f(collide_point.mV[VX] + mFootPlane.mV[VX], collide_point.mV[VY] + mFootPlane.mV[VY], collide_point.mV[VZ] + mFootPlane.mV[VZ]);
- }gGL.end();
+ }
+ gGL.end();
+ gGL.flush();
}
//--------------------------------------------------------------------
// render all geomety attached to the skeleton
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 4972ce33ea..18b99d8b74 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1643,6 +1643,8 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
LLFastTimer ftm(LLFastTimer::FTM_STATESORT);
LLMemType mt(LLMemType::MTYPE_PIPELINE);
+ //LLVertexBuffer::unbind();
+
grabReferences(result);
{
@@ -2466,6 +2468,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
}
}
+ LLVertexBuffer::unbind();
+
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
@@ -4759,7 +4763,6 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
LLGLDisable blend(GL_BLEND);
-
//tex unit 0
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
@@ -4806,6 +4809,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
+ LLVertexBuffer::unbind();
+
LLGLState::checkStates();
LLGLState::checkTextureChannels();