From bc0cc449e0ab73effeb6cd113048943f53213367 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Sun, 1 Mar 2009 04:17:42 -0700 Subject: Backported possible crash fix while changing graphics settings from 1.22 --- ChangeLog.txt | 3 +++ linden/indra/newview/pipeline.cpp | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index e187605..d6d0f90 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -18,6 +18,9 @@ Applied patch for VWR-5575 (crash in the file picker dealing with accented characters and bad locale) by Alissa Sabre. + * linden/indra/newview/pipeline.cpp: + Backported possible crash fix while changing graphics settings from 1.22. + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =- 1.1.0 RC2 -= diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp index 3523635..e7db166 100644 --- a/linden/indra/newview/pipeline.cpp +++ b/linden/indra/newview/pipeline.cpp @@ -2665,6 +2665,18 @@ void LLPipeline::renderForSelect(std::set& objects, BOOL render LLGLState::checkClientArrays(); U32 last_type = 0; + // If we don't do this, we crash something on changing graphics settings + // from Medium -> Low, because we unload all the shaders and the + // draw pools aren't aware. I don't know if this has to be a separate + // loop before actual rendering. JC + for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) + { + LLDrawPool *poolp = *iter; + if (poolp->isFacePool() && hasRenderType(poolp->getType())) + { + poolp->prerender(); + } + } for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter) { LLDrawPool *poolp = *iter; -- cgit v1.1