From 9ea6a96be9a5fda489d5e5ce28fc2df7c6f4c309 Mon Sep 17 00:00:00 2001
From: prep <prep@lindenlab.com>
Date: Mon, 11 Mar 2013 17:29:05 -0400
Subject: LLWindow merge fixes for Mac

---
 indra/llwindow/llwindowmacosx.cpp       |  3 ++-
 indra/llwindow/llwindowmacosx.h         |  2 +-
 indra/llwindow/llwindowmesaheadless.cpp | 29 ++++++++++++++++-------------
 indra/llwindow/llwindowmesaheadless.h   |  3 +--
 indra/llwindow/llwindowsdl.cpp          | 13 +++++++------
 indra/llwindow/llwindowsdl.h            |  2 +-
 6 files changed, 28 insertions(+), 24 deletions(-)

(limited to 'indra/llwindow')

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 413a9df616..97637c937f 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -210,7 +210,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 							   const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
 							   S32 height, U32 flags,
 							   BOOL fullscreen, BOOL clearBg,
-							   BOOL disable_vsync,
+							   BOOL disable_vsync, BOOL use_gl,
 							   BOOL ignore_pixel_depth,
 							   U32 fsaa_samples)
 	: LLWindow(NULL, fullscreen, flags)
@@ -228,6 +228,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	gKeyboard = new LLKeyboardMacOSX();
 	gKeyboard->setCallbacks(callbacks);
 
+	// Ignore use_gl for now, only used for drones on PC
 	mWindow = NULL;
 	mContext = NULL;
 	mPixelFormat = NULL;
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index fcb738ed0f..af83b50097 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -122,7 +122,7 @@ public:
 protected:
 	LLWindowMacOSX(LLWindowCallbacks* callbacks,
 		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
 		BOOL ignore_pixel_depth,
 		U32 fsaa_samples);
 	~LLWindowMacOSX();
diff --git a/indra/llwindow/llwindowmesaheadless.cpp b/indra/llwindow/llwindowmesaheadless.cpp
index 2b668d3fc4..11c22ac94e 100644
--- a/indra/llwindow/llwindowmesaheadless.cpp
+++ b/indra/llwindow/llwindowmesaheadless.cpp
@@ -41,25 +41,28 @@ U16 *gMesaBuffer = NULL;
 LLWindowMesaHeadless::LLWindowMesaHeadless(LLWindowCallbacks* callbacks,
                                            const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 							 U32 flags,  BOOL fullscreen, BOOL clearBg,
-							 BOOL disable_vsync, BOOL ignore_pixel_depth)
+							 BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth)
 	: LLWindow(callbacks, fullscreen, flags)
 {
-	llinfos << "MESA Init" << llendl;
-	mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL );
+	if (use_gl)
+	{
+		llinfos << "MESA Init" << llendl;
+		mMesaContext = OSMesaCreateContextExt( GL_RGBA, 32, 0, 0, NULL );
 
-	/* Allocate the image buffer */
-	mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE];
-	llassert(mMesaBuffer);
+		/* Allocate the image buffer */
+		mMesaBuffer = new unsigned char [width * height * 4 * MESA_CHANNEL_SIZE];
+		llassert(mMesaBuffer);
 
-	gMesaBuffer = (U16*)mMesaBuffer;
+		gMesaBuffer = (U16*)mMesaBuffer;
 
-	/* Bind the buffer to the context and make it current */
-	if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height ))
-	{
-		llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl;
-	}
+		/* Bind the buffer to the context and make it current */
+		if (!OSMesaMakeCurrent( mMesaContext, mMesaBuffer, MESA_CHANNEL_TYPE, width, height ))
+		{
+			llerrs << "MESA: OSMesaMakeCurrent failed!" << llendl;
+		}
 
-	llverify(gGLManager.initGL());
+		llverify(gGLManager.initGL());
+	}
 }
 
 
diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h
index c8d2bf2824..8f70aee4f6 100644
--- a/indra/llwindow/llwindowmesaheadless.h
+++ b/indra/llwindow/llwindowmesaheadless.h
@@ -51,7 +51,6 @@ public:
 	/*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
 	/*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
 	/*virtual*/ BOOL setSizeImpl(LLCoordScreen size) {return FALSE;};
-	/*virtual*/ BOOL setSizeImpl(LLCoordWindow size) {return FALSE;};	
 	/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL) {return FALSE;};
 	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;};
 	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;};
@@ -98,7 +97,7 @@ public:
 	LLWindowMesaHeadless(LLWindowCallbacks* callbacks,
                          const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height,
 				  U32 flags,  BOOL fullscreen, BOOL clearBg,
-				  BOOL disable_vsync, BOOL ignore_pixel_depth);
+				  BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
 	~LLWindowMesaHeadless();
 
 private:
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 0d2e0f78c1..a15114cb9b 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -186,7 +186,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 			 const std::string& title, S32 x, S32 y, S32 width,
 			 S32 height, U32 flags,
 			 BOOL fullscreen, BOOL clearBg,
-			 BOOL disable_vsync,
+			 BOOL disable_vsync, BOOL use_gl,
 			 BOOL ignore_pixel_depth, U32 fsaa_samples)
 	: LLWindow(callbacks, fullscreen, flags),
 	  Lock_Display(NULL),
@@ -197,6 +197,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 	gKeyboard->setCallbacks(callbacks);
 	// Note that we can't set up key-repeat until after SDL has init'd video
 
+	// Ignore use_gl for now, only used for drones on PC
 	mWindow = NULL;
 	mNeedsResize = FALSE;
 	mOverrideAspectRatio = 0.f;
@@ -1643,24 +1644,24 @@ void check_vm_bloat()
 		const long long significant_vm_difference = 250 * 1024*1024;
 		const long long significant_rss_difference = 50 * 1024*1024;
 
+		ssize_t res;
 		size_t dummy;
 		char *ptr;
-		size_t delim_result = 0;
-		for (int i=0; i<22 && delim_result > -1; ++i) // parse past the values we don't want
+		for (int i=0; i<22; ++i) // parse past the values we don't want
 		{
 			ptr = NULL;
-			delim_result = getdelim(&ptr, &dummy, ' ', fp);
+			res = getdelim(&ptr, &dummy, ' ', fp);
 			free(ptr);
 		}
 		// 23rd space-delimited entry is vsize
 		ptr = NULL;
-		delim_result = getdelim(&ptr, &dummy, ' ', fp);
+		res = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
 		long long this_vm_size = atoll(ptr);
 		free(ptr);
 		// 24th space-delimited entry is RSS
 		ptr = NULL;
-		delim_result = getdelim(&ptr, &dummy, ' ', fp);
+		res = getdelim(&ptr, &dummy, ' ', fp);
 		llassert(ptr);
 		long long this_rss_size = getpagesize() * atoll(ptr);
 		free(ptr);
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index d430e3d83b..c5ce892a04 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -147,7 +147,7 @@ public:
 protected:
 	LLWindowSDL(LLWindowCallbacks* callbacks,
 		const std::string& title, int x, int y, int width, int height, U32 flags,
-		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync,
+		BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
 		BOOL ignore_pixel_depth, U32 fsaa_samples);
 	~LLWindowSDL();
 
-- 
cgit v1.2.3