diff options
| author | Dave Parks <davep@lindenlab.com> | 2011-07-29 23:59:52 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2011-07-29 23:59:52 -0500 | 
| commit | a234d2433195cfd719910117d2db3185f54af8e7 (patch) | |
| tree | 7abc5ffb10dc770c4c8bd58b553898eaf7003b6d | |
| parent | e16eb4ae4a73125bc4e74fc667aa99110ac77c29 (diff) | |
STORM-1512 Fix for crash when rendering impostors.
| -rw-r--r-- | indra/newview/pipeline.cpp | 63 | 
1 files changed, 33 insertions, 30 deletions
| diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index dfcc7396ba..0abeed988c 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3741,52 +3741,55 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)  	LLVertexBuffer::unbind();  	LLGLState::checkStates(); -	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights"); - -	if (!sReflectionRender) +	if (!LLPipeline::sImpostorRender)  	{ -		renderHighlights(); -	} +		LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights"); -	// Contains a list of the faces of objects that are physical or -	// have touch-handlers. -	mHighlightFaces.clear(); +		if (!sReflectionRender) +		{ +			renderHighlights(); +		} -	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDebug"); +		// Contains a list of the faces of objects that are physical or +		// have touch-handlers. +		mHighlightFaces.clear(); + +		LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDebug"); -	renderDebug(); +		renderDebug(); -	LLVertexBuffer::unbind(); +		LLVertexBuffer::unbind(); -	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred) -	{ -		if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) +		if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred)  		{ -			// Render debugging beacons. -			gObjectList.renderObjectBeacons(); -			gObjectList.resetObjectBeacons(); +			if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) +			{ +				// Render debugging beacons. +				gObjectList.renderObjectBeacons(); +				gObjectList.resetObjectBeacons(); +			} +			else +			{ +				// Make sure particle effects disappear +				LLHUDObject::renderAllForTimer(); +			}  		}  		else  		{  			// Make sure particle effects disappear  			LLHUDObject::renderAllForTimer();  		} -	} -	else -	{ -		// Make sure particle effects disappear -		LLHUDObject::renderAllForTimer(); -	} -	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd"); +		LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd"); -	//HACK: preserve/restore matrices around HUD render -	if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) -	{ -		for (U32 i = 0; i < 16; i++) +		//HACK: preserve/restore matrices around HUD render +		if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))  		{ -			gGLModelView[i] = saved_modelview[i]; -			gGLProjection[i] = saved_projection[i]; +			for (U32 i = 0; i < 16; i++) +			{ +				gGLModelView[i] = saved_modelview[i]; +				gGLProjection[i] = saved_projection[i]; +			}  		}  	} | 
