From e2ef5a5edce6a01724d91fde5b471b0bae18d045 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Thu, 19 Jan 2012 14:38:16 -0500
Subject: [PATCH] Path-196 : vbo cleanup, visual fixes (path-222)

---
 indra/cmake/00-Common.cmake        |  2 +-
 indra/llrender/llrendernavprim.cpp | 19 ++++++++++++++++---
 indra/llrender/llrendernavprim.h   |  8 +++++---
 indra/newview/CMakeLists.txt       |  6 +++---
 indra/newview/pipeline.cpp         |  7 ++++++-
 5 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 98eeed09b3a..9db0f4fff8f 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -180,7 +180,7 @@ if (LINUX)
       # this stops us requiring a really recent glibc at runtime
       add_definitions(-fno-stack-protector)
       # linking can be very memory-hungry, especially the final viewer link
-      set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
+      set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory,FORCE:MULTIPLE")
     endif (NOT STANDALONE)
   endif (VIEWER)
 
diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp
index 3d76f08496b..71e808d04ee 100644
--- a/indra/llrender/llrendernavprim.cpp
+++ b/indra/llrender/llrendernavprim.cpp
@@ -1,6 +1,6 @@
 /** 
  * @file LLRenderNavPrim.cpp
- * @brief 
+ * @brief Renderable primitives used by the pathing library
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -35,7 +35,7 @@
 //=============================================================================
 LLRenderNavPrim gRenderNav;
 //=============================================================================
-void LLRenderNavPrim::renderSegment( const LLVector3& start, const LLVector3& end, int color,bool overlayMode  ) const
+void LLRenderNavPrim::renderSegment( const LLVector3& start, const LLVector3& end, int color, bool overlayMode  ) const
 {	
 	LLGLSLShader::sNoFixedFunction = false;
 	LLColor4 colorA( color );	
@@ -54,7 +54,7 @@ void LLRenderNavPrim::renderSegment( const LLVector3& start, const LLVector3& en
 	glLineWidth(1.0f);	
 }
 //=============================================================================
-void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color,bool overlayMode  ) const
+void LLRenderNavPrim::renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color, bool overlayMode ) const
 {
 	glLineWidth(1.5f);	
 	if ( overlayMode )
@@ -101,3 +101,16 @@ void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt )
 	glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );	
 }
 //=============================================================================
+void LLRenderNavPrim::renderStar( const LLVector3& center, const float scale, int color ) const
+{	
+	for (int k=0; k<3; k++)
+	{
+		LLVector3 star, pt1, pt2;
+		star = LLVector3( 0.0f,0.0f,0.0f);
+		star[k] = 0.5f;
+		pt1 =  center + star;
+		pt2 =  center - star;	
+		renderSegment( pt1, pt2, color, false );
+	}
+}
+//=============================================================================
diff --git a/indra/llrender/llrendernavprim.h b/indra/llrender/llrendernavprim.h
index a30a14551de..d88fe656b7b 100644
--- a/indra/llrender/llrendernavprim.h
+++ b/indra/llrender/llrendernavprim.h
@@ -40,11 +40,13 @@ class LLRenderNavPrim
 {
 public:
 	//Draw a line
-	void renderSegment( const LLVector3& start, const LLVector3& end, int color,bool overlayMode  ) const;
+	void renderSegment( const LLVector3& start, const LLVector3& end, int color, bool overlayMode  ) const;
 	//Draw simple tri
-	void renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color,bool overlayMode  ) const;
+	void renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color, bool overlayMode ) const;
 	//Draw the contents of vertex buffer
-	void renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt  );
+	void renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt );
+	//Draw a star
+	void renderStar( const LLVector3& center, const float scale, int color ) const;
 
 private:
 };
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 31081e32dec..314bd790ddf 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1517,9 +1517,9 @@ if (WINDOWS)
         PROPERTIES
         # *TODO -reenable this once we get server usage sorted out
         #LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:\"__tcmalloc\""
-        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc"
-        LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
-        LINK_FLAGS_RELEASE ""
+        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc /FORCE:MULTIPLE"
+  		LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO /FORCE:MULTIPLE"
+  		LINK_FLAGS_RELEASE "/FORCE:MULTIPLE"
         )
     if(USE_PRECOMPILED_HEADERS)
         set_target_properties(
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 7511208ae5b..f90c525f11f 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -104,6 +104,7 @@
 #include "lltoolpie.h"
 #include "llcurl.h"
 #include "llnotifications.h"
+#include "llpathinglib.h"
 
 #ifdef _DEBUG
 // Debug indices is disabled for now for debug performance - djs 4/24/02
@@ -6212,7 +6213,11 @@ void LLPipeline::resetVertexBuffers()
 
 	gSky.resetVertexBuffers();
 
-		LLVertexBuffer::cleanupClass();
+	if ( LLPathingLib::getInstance() )
+	{
+		LLPathingLib::getInstance()->cleanupVBOManger();
+	}
+	LLVertexBuffer::cleanupClass();
 
 	//delete all name pool caches
 	LLGLNamePool::cleanupPools();
-- 
GitLab