summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-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
17 files changed, 164 insertions, 66 deletions
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();