diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 8 | ||||
| -rw-r--r-- | indra/newview/gpu_table.txt | 1 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolalpha.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llface.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llfloateranimpreview.cpp | 64 | ||||
| -rw-r--r-- | indra/newview/llfloateranimpreview.h | 3 | ||||
| -rw-r--r-- | indra/newview/llfloatertools.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerdisplay.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 61 | ||||
| -rw-r--r-- | indra/newview/llvoicevisualizer.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 14 | 
14 files changed, 110 insertions, 71 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e954d97310..f1e4b39d7d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2855,7 +2855,7 @@          <key>Type</key>              <string>Boolean</string>          <key>Value</key> -            <string>0</string> +            <integer>0</integer>          </map>      <key>JoystickFlycamEnabled</key>          <map> @@ -6089,9 +6089,9 @@              <string>Color4</string>          <key>Value</key>              <array> -                <real>0.819999992847442626953125</real> -                <real>0.819999992847442626953125</real> -                <real>0.9900000095367431640625</real> +                <real>0.8235294117</real> +                <real>0.2745098039</real> +                <real>0.2745098039</real>                  <real>1</real>              </array>          </map> diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index 842e1afaad..f0b0f0c514 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -195,6 +195,7 @@ NVIDIA GeForce Go 6				.*GeForce Go 6.*					1		1  NVIDIA GeForce PCX				.*GeForce PCX.*						0		1  NVIDIA Generic					.*NVIDIA.*Unknown.*					0		0  NVIDIA NV43						.*NVIDIA.*NV43.*					1		1 +NVIDIA MCP78					.*NVIDIA.*MCP78.*					1		1  NVIDIA Quadro2					.*Quadro2.*							0		1  NVIDIA Quadro4					.*Quadro4.*							0		1  NVIDIA Quadro DCC				.*Quadro DCC.*						0		1 diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 795f6bc396..09901984c4 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -149,10 +149,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)  void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask)  { -#if !LL_RELEASE_FOR_DOWNLOAD -	LLGLState::checkClientArrays(mask); -#endif -  	for (LLCullResult::sg_list_t::iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i)  	{  		LLSpatialGroup* group = *i; diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 5a683c4c2e..3ced3541d2 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -411,7 +411,8 @@ void LLFace::renderForSelect(U32 data_mask)  void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color)  { -	if(mDrawablep.isNull() || mVertexBuffer.isNull()) +	if(mDrawablep.isNull() || mVertexBuffer.isNull() || mDrawablep->getSpatialGroup() == NULL || +		mDrawablep->getSpatialGroup()->isState(LLSpatialGroup::GEOM_DIRTY))  	{  		return;  	} diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index aba92791e0..c2495e4037 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -114,6 +114,34 @@ LLFloaterAnimPreview::LLFloaterAnimPreview(const char* filename) :  }  //----------------------------------------------------------------------------- +// setAnimCallbacks() +//----------------------------------------------------------------------------- +void LLFloaterAnimPreview::setAnimCallbacks() +{ +	childSetCommitCallback("playback_slider", onSliderMove, this); +	 +	childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this); +	childSetValue("preview_base_anim", "Standing"); + +	childSetCommitCallback("priority", onCommitPriority, this); +	childSetCommitCallback("loop_check", onCommitLoop, this); +	childSetCommitCallback("loop_in_point", onCommitLoopIn, this); +	childSetValidate("loop_in_point", validateLoopIn); +	childSetCommitCallback("loop_out_point", onCommitLoopOut, this); +	childSetValidate("loop_out_point", validateLoopOut); + +	childSetCommitCallback("hand_pose_combo", onCommitHandPose, this); +	 +	childSetCommitCallback("emote_combo", onCommitEmote, this); +	childSetValue("emote_combo", "[None]"); + +	childSetCommitCallback("ease_in_time", onCommitEaseIn, this); +	childSetValidate("ease_in_time", validateEaseIn); +	childSetCommitCallback("ease_out_time", onCommitEaseOut, this); +	childSetValidate("ease_out_time", validateEaseOut); +} + +//-----------------------------------------------------------------------------  // postBuild()  //-----------------------------------------------------------------------------  BOOL LLFloaterAnimPreview::postBuild() @@ -172,29 +200,29 @@ BOOL LLFloaterAnimPreview::postBuild()  	mStopButton->setScaleImage(TRUE);  	r.set(r.mRight + PREVIEW_HPAD, y, getRect().getWidth() - PREVIEW_HPAD, y - BTN_HEIGHT); -	childSetCommitCallback("playback_slider", onSliderMove, this); +	//childSetCommitCallback("playback_slider", onSliderMove, this);  	childHide("bad_animation_text"); -	childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this); -	childSetValue("preview_base_anim", "Standing"); +	//childSetCommitCallback("preview_base_anim", onCommitBaseAnim, this); +	//childSetValue("preview_base_anim", "Standing"); -	childSetCommitCallback("priority", onCommitPriority, this); -	childSetCommitCallback("loop_check", onCommitLoop, this); -	childSetCommitCallback("loop_in_point", onCommitLoopIn, this); -	childSetValidate("loop_in_point", validateLoopIn); -	childSetCommitCallback("loop_out_point", onCommitLoopOut, this); -	childSetValidate("loop_out_point", validateLoopOut); +	//childSetCommitCallback("priority", onCommitPriority, this); +	//childSetCommitCallback("loop_check", onCommitLoop, this); +	//childSetCommitCallback("loop_in_point", onCommitLoopIn, this); +	//childSetValidate("loop_in_point", validateLoopIn); +	//childSetCommitCallback("loop_out_point", onCommitLoopOut, this); +	//childSetValidate("loop_out_point", validateLoopOut); -	childSetCommitCallback("hand_pose_combo", onCommitHandPose, this); +	//childSetCommitCallback("hand_pose_combo", onCommitHandPose, this); -	childSetCommitCallback("emote_combo", onCommitEmote, this); -	childSetValue("emote_combo", "[None]"); +	//childSetCommitCallback("emote_combo", onCommitEmote, this); +	//childSetValue("emote_combo", "[None]"); -	childSetCommitCallback("ease_in_time", onCommitEaseIn, this); -	childSetValidate("ease_in_time", validateEaseIn); -	childSetCommitCallback("ease_out_time", onCommitEaseOut, this); -	childSetValidate("ease_out_time", validateEaseOut); +	//childSetCommitCallback("ease_in_time", onCommitEaseIn, this); +	//childSetValidate("ease_in_time", validateEaseIn); +	//childSetCommitCallback("ease_out_time", onCommitEaseOut, this); +	//childSetValidate("ease_out_time", validateEaseOut);  	if (!stricmp(strrchr(mFilename.c_str(), '.'), ".bvh"))  	{ @@ -254,6 +282,8 @@ BOOL LLFloaterAnimPreview::postBuild()  		if (success)  		{ +			setAnimCallbacks() ; +			  			const LLBBoxLocal &pelvis_bbox = motionp->getPelvisBBox();  			LLVector3 temp = pelvis_bbox.getCenter(); @@ -314,7 +344,7 @@ BOOL LLFloaterAnimPreview::postBuild()  			}  		} -		setEnabled(FALSE); +		//setEnabled(FALSE);  		mMotionID.setNull();  		mAnimPreview = NULL;  	} diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h index e2383c57e8..cbfba0c43e 100644 --- a/indra/newview/llfloateranimpreview.h +++ b/indra/newview/llfloateranimpreview.h @@ -106,6 +106,9 @@ public:  									   LLAssetType::EType type,  									   void* user_data,  									   S32 status, LLExtStat ext_status); +private: +	void setAnimCallbacks() ; +	  protected:  	void			draw();  	void			resetMotion(); diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 55be7a199c..b8f7e3ed0a 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -776,7 +776,7 @@ void LLFloaterTools::onClose(bool app_quitting)  	setVisible(FALSE);  	mTab->setVisible(FALSE); -	LLViewerJoystick::getInstance()->moveAvatar(true); +	LLViewerJoystick::getInstance()->moveAvatar(false);      // Different from handle_reset_view in that it doesn't actually   	//   move the camera if EditCameraMovement is not set. diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index abda5067e5..5eacb25ded 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -158,6 +158,7 @@ static LLPointer<LLObjectSelection> sNullSelection;  void LLSelectMgr::cleanupGlobals()  {  	sNullSelection = NULL; +	LLSelectMgr::getInstance()->clearSelections();  }  LLObjectSelection *get_null_object_selection() diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 59fa2c4bcc..b7cdf04de7 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2421,7 +2421,7 @@ public:  	{  		LLSpatialGroup* group = (LLSpatialGroup*) branch->getListener(0); -		if (mCamera && !mCamera->AABBInFrustumNoFarClip(group->mBounds[0], group->mBounds[1])) +		if (group->isState(LLSpatialGroup::GEOM_DIRTY) || (mCamera && !mCamera->AABBInFrustumNoFarClip(group->mBounds[0], group->mBounds[1])))  		{  			return;  		} diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 583139298f..152c614c08 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -545,8 +545,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  		BOOL to_texture = !for_snapshot &&  						gPipeline.canUseVertexShaders() && -						LLPipeline::sRenderGlow && -						gGLManager.mHasFramebufferObject; +						LLPipeline::sRenderGlow;  		// now do the swap buffer (just before rendering to framebuffer)  		{ //swap and flush state from previous frame @@ -893,8 +892,7 @@ void render_ui_and_swap()  	{  		BOOL to_texture = gPipeline.canUseVertexShaders() && -							LLPipeline::sRenderGlow && -							gGLManager.mHasFramebufferObject; +							LLPipeline::sRenderGlow;  		if (to_texture)  		{ diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 227a0d9ebe..af662d92aa 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1861,9 +1861,14 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  	if (new_rot != mLastRot  		|| new_angv != old_angv)  	{ -		mLastRot = new_rot; +		if (new_rot != mLastRot) +		{ +			mLastRot = new_rot; +			setRotation(new_rot); +		} +		  		setChanged(ROTATED | SILHOUETTE); -		setRotation(new_rot); +		  		resetRot();  	} diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b3f8c6d5eb..e403df7f45 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1684,7 +1684,7 @@ void LLViewerWindow::initBase()  	F32 gamma = gSavedSettings.getF32("RenderGamma");  	if (gamma != 0.0f)  	{ -		gViewerWindow->getWindow()->setGamma(gamma); +		getWindow()->setGamma(gamma);  	}  	// Create global views @@ -1953,7 +1953,7 @@ void LLViewerWindow::initWorldUI()  		// Status bar  		S32 menu_bar_height = gMenuBarView->getRect().getHeight(); -		LLRect root_rect = gViewerWindow->getRootView()->getRect(); +		LLRect root_rect = getRootView()->getRect();  		LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height);  		gStatusBar = new LLStatusBar("status", status_rect);  		gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); @@ -1965,10 +1965,10 @@ void LLViewerWindow::initWorldUI()  		LLFloaterChatterBox::createInstance(LLSD()); -		gViewerWindow->getRootView()->addChild(gStatusBar); +		getRootView()->addChild(gStatusBar);  		// menu holder appears on top to get first pass at all mouse events -		gViewerWindow->getRootView()->sendChildToFront(gMenuHolder); +		getRootView()->sendChildToFront(gMenuHolder);  	}  } @@ -2313,8 +2313,8 @@ void LLViewerWindow::draw()  			int pos_y = sub_region / llceil(zoom_factor);  			int pos_x = sub_region - (pos_y*llceil(zoom_factor));  			// offset for this tile -			glTranslatef((F32)gViewerWindow->getWindowWidth() * -(F32)pos_x,  -						(F32)gViewerWindow->getWindowHeight() * -(F32)pos_y,  +			glTranslatef((F32)getWindowWidth() * -(F32)pos_x,  +						(F32)getWindowHeight() * -(F32)pos_y,   						0.f);  			glScalef(zoom_factor, zoom_factor, 1.f);  			LLUI::sGLScaleFactor *= zoom_factor; @@ -2379,8 +2379,8 @@ void LLViewerWindow::draw()  			const S32 DIST_FROM_TOP = 20;  			LLFontGL::sSansSerifBig->renderUTF8(  				mOverlayTitle, 0, -				llround( gViewerWindow->getWindowWidth() * 0.5f), -				gViewerWindow->getWindowHeight() - DIST_FROM_TOP, +				llround( getWindowWidth() * 0.5f), +				getWindowHeight() - DIST_FROM_TOP,  				LLColor4(1, 1, 1, 0.4f),  				LLFontGL::HCENTER, LLFontGL::TOP);  		} @@ -3534,8 +3534,8 @@ void LLViewerWindow::hitUIElementAsync(S32 x, S32 y_from_bot, MASK mask, void (*  	// build orthogonal transform and picking viewport  	// Perform pick on a PICK_DIAMETER x PICK_DIAMETER pixel region around cursor point.  	// Don't limit the select distance for this pick. -	gViewerWindow->setup2DRender(); -	const LLVector2& display_scale = gViewerWindow->getDisplayScale(); +	setup2DRender(); +	const LLVector2& display_scale = getDisplayScale();  	glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);  	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); @@ -3549,7 +3549,7 @@ void LLViewerWindow::hitUIElementAsync(S32 x, S32 y_from_bot, MASK mask, void (*  	// Draw the objects so the user can select them.  	// The starting ID is 1, since land is zero. -	//gViewerWindow->drawForSelect(); +	//drawForSelect();  	stop_glerror(); @@ -3579,8 +3579,8 @@ void LLViewerWindow::performPick()  	// find pick region that is fully onscreen  	LLCoordGL scaled_pick_point = mPickPoint; -	scaled_pick_point.mX = llclamp(llround((F32)mPickPoint.mX * mDisplayScale.mV[VX]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayWidth() - PICK_HALF_WIDTH); -	scaled_pick_point.mY = llclamp(llround((F32)mPickPoint.mY * mDisplayScale.mV[VY]), PICK_HALF_WIDTH, gViewerWindow->getWindowDisplayHeight() - PICK_HALF_WIDTH); +	scaled_pick_point.mX = llclamp(llround((F32)mPickPoint.mX * mDisplayScale.mV[VX]), PICK_HALF_WIDTH, getWindowDisplayWidth() - PICK_HALF_WIDTH); +	scaled_pick_point.mY = llclamp(llround((F32)mPickPoint.mY * mDisplayScale.mV[VY]), PICK_HALF_WIDTH, getWindowDisplayHeight() - PICK_HALF_WIDTH);  	glReadPixels(scaled_pick_point.mX - PICK_HALF_WIDTH, scaled_pick_point.mY - PICK_HALF_WIDTH, PICK_DIAMETER, PICK_DIAMETER, GL_RGBA, GL_UNSIGNED_BYTE, mPickBuffer); @@ -4152,7 +4152,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio  		filepath += extension;  		struct stat stat_info; -		err = gViewerWindow->mWindow->stat( filepath.c_str(), &stat_info ); +		err = mWindow->stat( filepath.c_str(), &stat_info );  		i++;  	}  	while( -1 != err );  // search until the file is not found (i.e., stat() gives an error). @@ -4177,6 +4177,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageRaw *raw, const LLString& extensio  static S32 BORDERHEIGHT = 0;  static S32 BORDERWIDTH = 0; +// static  void LLViewerWindow::movieSize(S32 new_width, S32 new_height)  {  	LLCoordScreen size; @@ -4657,7 +4658,7 @@ void LLViewerWindow::drawMouselookInstructions()  	LLRect instructions_rect;  	instructions_rect.setLeftTopAndSize(   		INSTRUCTIONS_PAD, -		gViewerWindow->getWindowHeight() - INSTRUCTIONS_PAD, +		getWindowHeight() - INSTRUCTIONS_PAD,  		font->getWidth( instructions ) + 2 * INSTRUCTIONS_PAD,  		llround(font->getLineHeight() + 2 * INSTRUCTIONS_PAD)); @@ -4980,11 +4981,11 @@ void LLViewerWindow::getTargetWindow(BOOL& fullscreen, S32& width, S32& height)  {  	fullscreen = mWantFullscreen; -	if (gViewerWindow->mWindow -	&&  gViewerWindow->mWindow->getFullscreen() == mWantFullscreen) +	if (mWindow +	&&  mWindow->getFullscreen() == mWantFullscreen)  	{ -		width = gViewerWindow->getWindowDisplayWidth(); -		height = gViewerWindow->getWindowDisplayHeight(); +		width = getWindowDisplayWidth(); +		height = getWindowDisplayHeight();  	}  	else if (mWantFullscreen)  	{ @@ -5001,14 +5002,14 @@ void LLViewerWindow::getTargetWindow(BOOL& fullscreen, S32& width, S32& height)  BOOL LLViewerWindow::checkSettings()  { -	BOOL is_fullscreen = gViewerWindow->mWindow->getFullscreen(); +	BOOL is_fullscreen = mWindow->getFullscreen();  	if (is_fullscreen && !mWantFullscreen)  	{ -		gViewerWindow->changeDisplaySettings(FALSE,  -											 LLCoordScreen(gSavedSettings.getS32("WindowWidth"), -														   gSavedSettings.getS32("WindowHeight")), -											 TRUE, -											 mShowFullscreenProgress); +		changeDisplaySettings(FALSE,  +							  LLCoordScreen(gSavedSettings.getS32("WindowWidth"), +											gSavedSettings.getS32("WindowHeight")), +							  TRUE, +							  mShowFullscreenProgress);  		return TRUE;  	}  	else if (!is_fullscreen && mWantFullscreen) @@ -5022,11 +5023,11 @@ BOOL LLViewerWindow::checkSettings()  		LLGLState::checkStates();  		LLGLState::checkTextureChannels();  #endif -		gViewerWindow->changeDisplaySettings(TRUE,  -											 LLCoordScreen(gSavedSettings.getS32("FullScreenWidth"), -														   gSavedSettings.getS32("FullScreenHeight")), -											 gSavedSettings.getBOOL("DisableVerticalSync"), -											 mShowFullscreenProgress); +		changeDisplaySettings(TRUE,  +							  LLCoordScreen(gSavedSettings.getS32("FullScreenWidth"), +											gSavedSettings.getS32("FullScreenHeight")), +							  gSavedSettings.getBOOL("DisableVerticalSync"), +							  mShowFullscreenProgress);  #ifndef LL_RELEASE_FOR_DOWNLOAD  		LLGLState::checkStates(); diff --git a/indra/newview/llvoicevisualizer.cpp b/indra/newview/llvoicevisualizer.cpp index 38d435ff74..87f0ffdbee 100644 --- a/indra/newview/llvoicevisualizer.cpp +++ b/indra/newview/llvoicevisualizer.cpp @@ -369,7 +369,8 @@ void LLVoiceVisualizer::render()  		//---------------------------------------------------------------  		// some gl state  		//--------------------------------------------------------------- -		LLGLEnable blend( GL_BLEND ); +		LLGLSPipelineAlpha alpha_blend; +		LLGLDepthTest depth(GL_TRUE, GL_FALSE);  		//-------------------------------------------------------------  		// create coordinates of the geometry for the dot diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 69f2a4c4b7..4f71e33af5 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1162,8 +1162,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl  						!hasRenderType(LLPipeline::RENDER_TYPE_HUD) &&   						!sReflectionRender &&  						gPipeline.canUseVertexShaders() && -						sRenderGlow && -						gGLManager.mHasFramebufferObject; +						sRenderGlow;  	if (to_texture)  	{ @@ -1243,7 +1242,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl  	if (to_texture)  	{  		mScreen.flush(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		LLRenderTarget::unbindTarget();  	}  	else if (LLPipeline::sUseOcclusion > 1)  	{ @@ -2258,6 +2257,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)  	glEnableClientState(GL_VERTEX_ARRAY); +	LLVertexBuffer::unbind(); +  	// Do verification of GL state  #ifndef LL_RELEASE_FOR_DOWNLOAD  	LLGLState::checkStates(); @@ -4462,8 +4463,7 @@ void LLPipeline::bindScreenToTexture()  void LLPipeline::renderBloom(BOOL for_snapshot)  {  	if (!(gPipeline.canUseVertexShaders() && -		sRenderGlow && -		gGLManager.mHasFramebufferObject)) +		sRenderGlow))  	{  		return;  	} @@ -4862,6 +4862,8 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)  {  	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)  	{ +		LLVertexBuffer::unbind(); +  #ifndef LL_RELEASE_FOR_DOWNLOAD  		LLGLState::checkStates();  		LLGLState::checkTextureChannels(); @@ -5039,7 +5041,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)  		}  		last_update = LLDrawPoolWater::sNeedsReflectionUpdate && LLDrawPoolWater::sNeedsDistortionUpdate; -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +		LLRenderTarget::unbindTarget();  		LLPipeline::sReflectionRender = FALSE;  		if (!LLRenderTarget::sUseFBO) | 
