diff options
| author | brad kittenbrink <brad@lindenlab.com> | 2011-05-03 17:52:52 -0700 | 
|---|---|---|
| committer | brad kittenbrink <brad@lindenlab.com> | 2011-05-03 17:52:52 -0700 | 
| commit | 032e5d30c07b77402c9f38365a5b2d424ae25271 (patch) | |
| tree | b21cfae1240d222f1cf82c9154e7bbdcf5fe57e5 | |
| parent | b9bb792c478d703c6442351ecb563c0a67f77111 (diff) | |
| parent | 0d5a0cefd4d5b34d3c8e9d06621ec3e1f4e5d46b (diff) | |
Merge.
| -rw-r--r-- | indra/llcommon/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | indra/llrender/llgl.cpp | 29 | ||||
| -rw-r--r-- | indra/llrender/llgl.h | 7 | ||||
| -rw-r--r-- | indra/llrender/llvertexbuffer.cpp | 4 | ||||
| -rw-r--r-- | indra/llvfs/llvfs.cpp | 7 | ||||
| -rw-r--r-- | indra/llxml/llcontrol.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 2 | 
7 files changed, 22 insertions, 37 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 22e0705036..800bf8eba9 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -268,6 +268,10 @@ if(LLCOMMON_LINK_SHARED)        add_definitions(-fPIC)      endif(WINDOWS)    endif(NOT WORD_SIZE EQUAL 32) +  if(WINDOWS) +    # always generate llcommon.pdb, even for "Release" builds +    set_target_properties(llcommon PROPERTIES LINK_FLAGS "/DEBUG") +  endif(WINDOWS)    ll_stage_sharedlib(llcommon)  else(LLCOMMON_LINK_SHARED)      add_library (llcommon ${llcommon_SOURCE_FILES}) diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index c86c89fa9b..b1a4051e96 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -105,7 +105,6 @@ LLMatrix4 gGLObliqueProjectionInverse;  #define LL_GL_NAME_POOLING 0 -LLGLNamePool::pool_list_t LLGLNamePool::sInstances;  std::list<LLGLUpdate*> LLGLUpdate::sGLQ;  #if (LL_WINDOWS || LL_LINUX || LL_SOLARIS)  && !LL_MESA_HEADLESS @@ -1920,22 +1919,8 @@ LLGLNamePool::LLGLNamePool()  {  } -void LLGLNamePool::registerPool(LLGLNamePool* pool) -{ -	pool_list_t::iterator iter = std::find(sInstances.begin(), sInstances.end(), pool); -	if (iter == sInstances.end()) -	{ -		sInstances.push_back(pool); -	} -} -  LLGLNamePool::~LLGLNamePool()  { -	pool_list_t::iterator iter = std::find(sInstances.begin(), sInstances.end(), this); -	if (iter != sInstances.end()) -	{ -		sInstances.erase(iter); -	}  }  void LLGLNamePool::upkeep() @@ -2004,20 +1989,22 @@ void LLGLNamePool::release(GLuint name)  void LLGLNamePool::upkeepPools()  {  	LLMemType mt(LLMemType::MTYPE_UPKEEP_POOLS); -	for (pool_list_t::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter) +	tracker_t::LLInstanceTrackerScopedGuard guard; +	for (tracker_t::instance_iter iter = guard.beginInstances(); iter != guard.endInstances(); ++iter)  	{ -		LLGLNamePool* pool = *iter; -		pool->upkeep(); +		LLGLNamePool & pool = *iter; +		pool.upkeep();  	}  }  //static  void LLGLNamePool::cleanupPools()  { -	for (pool_list_t::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter) +	tracker_t::LLInstanceTrackerScopedGuard guard; +	for (tracker_t::instance_iter iter = guard.beginInstances(); iter != guard.endInstances(); ++iter)  	{ -		LLGLNamePool* pool = *iter; -		pool->cleanup(); +		LLGLNamePool & pool = *iter; +		pool.cleanup();  	}  } diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 684fd50883..51b0a1e45f 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -40,6 +40,7 @@  #include "v4math.h"  #include "llplane.h"  #include "llgltypes.h" +#include "llinstancetracker.h"  #include "llglheaders.h"  #include "glh/glh_linear.h" @@ -328,9 +329,11 @@ public:  	Generic pooling scheme for things which use GL names (used for occlusion queries and vertex buffer objects).  	Prevents thrashing of GL name caches by avoiding calls to glGenFoo and glDeleteFoo.  */ -class LLGLNamePool +class LLGLNamePool : public LLInstanceTracker<LLGLNamePool>  {  public: +	typedef LLInstanceTracker<LLGLNamePool> tracker_t; +  	struct NameEntry  	{  		GLuint name; @@ -357,13 +360,11 @@ public:  	GLuint allocate();  	void release(GLuint name); -	static void registerPool(LLGLNamePool* pool);  	static void upkeepPools();  	static void cleanupPools();  protected:  	typedef std::vector<LLGLNamePool*> pool_list_t; -	static pool_list_t sInstances;  	virtual GLuint allocateName() = 0;  	virtual void releaseName(GLuint name) = 0; diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 1beb74eca6..1a5a4f734d 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -323,10 +323,6 @@ void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping)  	}  	sDisableVBOMapping = sEnableVBOs && no_vbo_mapping ; -	LLGLNamePool::registerPool(&sDynamicVBOPool); -	LLGLNamePool::registerPool(&sDynamicIBOPool); -	LLGLNamePool::registerPool(&sStreamVBOPool); -	LLGLNamePool::registerPool(&sStreamIBOPool);  }  //static  diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index c1fe21c57d..78b67e9b68 100644 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp @@ -26,6 +26,8 @@  #include "linden_common.h" +#include "llvfs.h" +  #include <sys/stat.h>  #include <set>  #include <map> @@ -39,8 +41,6 @@  #include <sys/file.h>  #endif -#include "llvfs.h" -  #include "llstl.h"  #include "lltimer.h" @@ -1711,7 +1711,8 @@ void LLVFS::audit()  	BOOL vfs_corrupt = FALSE; -	std::vector<U8> buffer(index_size); +	// since we take the address of element 0, we need to have at least one element. +	std::vector<U8> buffer(llmax<size_t>(index_size,1U));  	if (fread(&buffer[0], 1, index_size, mIndexFP) != index_size)  	{ diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp index 6e4364a20d..0809d95628 100644 --- a/indra/llxml/llcontrol.cpp +++ b/indra/llxml/llcontrol.cpp @@ -837,9 +837,7 @@ U32 LLControlGroup::saveToFile(const std::string& filename, BOOL nondefault_only  U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_values, bool save_values)  { -	std::string name;  	LLSD settings; -	LLSD control_map;  	llifstream infile;  	infile.open(filename);  	if(!infile.is_open()) @@ -863,8 +861,8 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v  	for(LLSD::map_const_iterator itr = settings.beginMap(); itr != settings.endMap(); ++itr)  	{  		bool persist = true; -		name = (*itr).first; -		control_map = (*itr).second; +		std::string const & name = itr->first; +		LLSD const & control_map = itr->second;  		if(control_map.has("Persist"))   		{ diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 8adb8c30e0..94784f3f49 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -1635,8 +1635,6 @@ LLSpatialPartition::LLSpatialPartition(U32 data_mask, BOOL render_by_group, U32  	mSlopRatio = 0.25f;  	mInfiniteFarClip = FALSE; -	LLGLNamePool::registerPool(&sQueryPool); -  	mOctree = new LLSpatialGroup::OctreeRoot(LLVector3d(0,0,0),   											LLVector3d(1,1,1),   											NULL); | 
