From aa96d1fddff3d5bf68a5014229a0d20584937222 Mon Sep 17 00:00:00 2001
From: Steven Bennetts <steve@lindenlab.com>
Date: Tue, 3 Apr 2007 00:16:59 +0000
Subject: [PATCH] merge -r 59337:59951 Branch_1-14-0 -> release.

---
 indra/newview/English.lproj/InfoPlist.strings |  4 +-
 indra/newview/Info-SecondLife.plist           |  2 +-
 indra/newview/featuretable.txt                |  2 +-
 indra/newview/featuretable_mac.txt            |  4 +-
 indra/newview/lleventpoll.cpp                 |  6 +--
 indra/newview/llflexibleobject.cpp            |  1 +
 indra/newview/llstartup.cpp                   |  8 +++
 indra/newview/llviewerstats.cpp               | 52 +++++++++----------
 indra/newview/llviewerthrottle.cpp            |  6 ++-
 indra/newview/llvlcomposition.cpp             | 17 ++++--
 10 files changed, 63 insertions(+), 39 deletions(-)

diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index f49ffa16039..784525aad4b 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
 /* Localized versions of Info.plist keys */
 
 CFBundleName = "Second Life";
-CFBundleShortVersionString = "Second Life version 1.13.4.8";
-CFBundleGetInfoString = "Second Life version 1.13.4.8, Copyright 2004-2007 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 1.14.0.1";
+CFBundleGetInfoString = "Second Life version 1.14.0.1, Copyright 2004-2007 Linden Research, Inc.";
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index 448c7922ff8..c7d430725f0 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>1.13.4.8</string>
+	<string>1.14.0.1</string>
 	<key>CSResourcesFileMapped</key>
 	<true/>
 </dict>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 59e816d61bf..17e24277f03 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -40,7 +40,7 @@ VertexShaderEnable	1	1
 //
 list Class0
 VertexShaderEnable	1	0
-RenderVBO			1	1
+RenderVBO			1	0
 RenderDistance		1	64
 RenderAvatarVP		1	0
 RenderAvatarMode	1	0
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 568a2600348..2685e3b7b41 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 9
+version 10
 
 // NOTE: This is mostly identical to featuretable.txt with a few differences
 // Should be combined into one table
@@ -24,7 +24,7 @@ version 9
 //
 // Mac specific: RenderAvatarVP not enabled at all
 list all
-RenderVBO			1	1
+RenderVBO			1	0
 RenderAniso			1	0
 RenderAvatarMode	1	2
 RenderAvatarVP		1	0
diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp
index 5e12916975b..2ad7eb68667 100644
--- a/indra/newview/lleventpoll.cpp
+++ b/indra/newview/lleventpoll.cpp
@@ -30,8 +30,8 @@ class LLEventPoll::Impl : LLHTTPClient::Responder
 	
 	void stop()
 	{
-		llinfos << "LLEventPoll::Impl::stop <" << mCount << "> "
-			<< mPollURL << llendl;
+		lldebugs << "LLEventPoll::Impl::stop <" << mCount << "> "
+				 << mPollURL << llendl;
 		// there should be a way to stop a LLHTTPClient request in progress
 		mDone = true;
 		mPtr = NULL;
@@ -50,7 +50,7 @@ class LLEventPoll::Impl : LLHTTPClient::Responder
 	~Impl()
 	{
 		lldebugs << "LLEventPoll::Impl::~Impl <" << mCount << "> "
-			<< mPollURL << llendl;
+				 << mPollURL << llendl;
 	}
 
 
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index 020ce00bab8..2b11653da07 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -619,6 +619,7 @@ BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable)
 		volume->mVolumeChanged)
 	{
 		volume->regenFaces();
+		volume->mDrawable->setState(LLDrawable::REBUILD_VOLUME);
 	}
 
 	if (!mUpdated || volume->mFaceMappingChanged || volume->mVolumeChanged)
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index f3158694372..d57292e23df 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -614,6 +614,8 @@ BOOL idle_startup()
 
 	if (STATE_LOGIN_SHOW == gStartupState)
 	{
+		llinfos << "Initializing Window" << llendl;
+		
 		gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
 		// Push our window frontmost
 		gViewerWindow->getWindow()->show();
@@ -2531,13 +2533,19 @@ BOOL idle_startup()
 
 void login_show()
 {
+	llinfos << "Initializing Login Screen" << llendl;
+	
 	LLPanelLogin::show(	gViewerWindow->getVirtualWindowRect(),
 						gSavedSettings.getBOOL("UseDebugLogin"),
 						login_callback, NULL );
 
+	llinfos << "Decoding Images" << llendl;
+	
 	// Make sure all the UI textures are present and decoded.
 	gImageList.decodeAllImages(2.f);
 
+	llinfos << "Setting Servers" << llendl;
+	
 	if( USERSERVER_OTHER == gUserServerChoice )
 	{
 		LLPanelLogin::addServer( gUserServerName, USERSERVER_OTHER );
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 4a5cbd20e60..f1df0d39e06 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -49,7 +49,7 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
 	// ST_IM_COUNT
 	StatAttributes("IMs sent", FALSE, FALSE),
 	// ST_FULLSCREEN_BOOL
-	StatAttributes("Fullscreen mode", TRUE, FALSE),
+	StatAttributes("Fullscreen mode", FALSE, FALSE),
 	// ST_RELEASE_COUNT
 	StatAttributes("Object release count", FALSE, FALSE),
 	// ST_CREATE_COUNT
@@ -99,61 +99,61 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
 	// ST_UPLOAD_ANIM_COUNT
 	StatAttributes("Animations uploaded", FALSE, FALSE),
 	// ST_FPS_8_SECONDS
-	StatAttributes("Seconds below 8 FPS", TRUE, TRUE),
+	StatAttributes("Seconds below 8 FPS", FALSE, TRUE),
 	// ST_SIM_FPS_20_SECONDS
-	StatAttributes("Seconds with sim FPS below 20", TRUE, TRUE),
+	StatAttributes("Seconds with sim FPS below 20", FALSE, TRUE),
 	// ST_PHYS_FPS_20_SECONDS
 	StatAttributes("Seconds with physics FPS below 20", FALSE, TRUE),
 	// ST_LOSS_05_SECONDS
-	StatAttributes("Seconds with packet loss > 5%", TRUE, TRUE),
+	StatAttributes("Seconds with packet loss > 5%", FALSE, TRUE),
 	// ST_FPS_DROP_50_RATIO
 	StatAttributes("Ratio of frames 2x longer than previous", FALSE, FALSE),
 	// ST_ENABLE_VBO
 	StatAttributes("Vertex Buffers Enabled", TRUE, FALSE),
 	// ST_DELTA_BANDWIDTH
-	StatAttributes("Increase/Decrease in bandwidth based on packet loss", TRUE, FALSE),
+	StatAttributes("Increase/Decrease in bandwidth based on packet loss", FALSE, FALSE),
 	// ST_MAX_BANDWIDTH
-	StatAttributes("Max bandwidth setting", TRUE, FALSE),
+	StatAttributes("Max bandwidth setting", FALSE, FALSE),
 	// ST_LIGHTING_DETAIL
-	StatAttributes("Lighting Detail", TRUE, FALSE),
+	StatAttributes("Lighting Detail", FALSE, FALSE),
 	// ST_VISIBLE_AVATARS
-	StatAttributes("Visible Avatars", TRUE, FALSE),
+	StatAttributes("Visible Avatars", FALSE, FALSE),
 	// ST_SHADER_OJECTS
-	StatAttributes("Object Shaders", TRUE, FALSE),
+	StatAttributes("Object Shaders", FALSE, FALSE),
 	// ST_SHADER_ENVIRONMENT
-	StatAttributes("Environment Shaders", TRUE, FALSE),
+	StatAttributes("Environment Shaders", FALSE, FALSE),
 	// ST_VISIBLE_DRAW_DIST
-	StatAttributes("Draw Distance", TRUE, FALSE),
+	StatAttributes("Draw Distance", FALSE, FALSE),
 	// ST_VISIBLE_CHAT_BUBBLES
-	StatAttributes("Chat Bubbles Enabled", TRUE, FALSE),
+	StatAttributes("Chat Bubbles Enabled", FALSE, FALSE),
 	// ST_SHADER_AVATAR
-	StatAttributes("Avatar Shaders", TRUE, FALSE),
+	StatAttributes("Avatar Shaders", FALSE, FALSE),
 	// ST_FRAME_SECS
-	StatAttributes("FRAME_SECS", TRUE, FALSE),
+	StatAttributes("FRAME_SECS", FALSE, FALSE),
 	// ST_UPDATE_SECS
-	StatAttributes("UPDATE_SECS", TRUE, FALSE),
+	StatAttributes("UPDATE_SECS", FALSE, FALSE),
 	// ST_NETWORK_SECS
-	StatAttributes("NETWORK_SECS", TRUE, FALSE),
+	StatAttributes("NETWORK_SECS", FALSE, FALSE),
 	// ST_IMAGE_SECS
-	StatAttributes("IMAGE_SECS", TRUE, FALSE),
+	StatAttributes("IMAGE_SECS", FALSE, FALSE),
 	// ST_REBUILD_SECS
-	StatAttributes("REBUILD_SECS", TRUE, FALSE),
+	StatAttributes("REBUILD_SECS", FALSE, FALSE),
 	// ST_RENDER_SECS
-	StatAttributes("RENDER_SECS", TRUE, FALSE),
+	StatAttributes("RENDER_SECS", FALSE, FALSE),
 	// ST_CROSSING_AVG
-	StatAttributes("CROSSING_AVG", TRUE, FALSE),
+	StatAttributes("CROSSING_AVG", FALSE, FALSE),
 	// ST_CROSSING_MAX
-	StatAttributes("CROSSING_MAX", TRUE, FALSE),
+	StatAttributes("CROSSING_MAX", FALSE, FALSE),
 	// ST_LIBXUL_WIDGET_USED
-	StatAttributes("LibXUL Widget used", TRUE, FALSE),
+	StatAttributes("LibXUL Widget used", FALSE, FALSE),
 	// ST_WINDOW_WIDTH
-	StatAttributes("Window width", TRUE, FALSE),
+	StatAttributes("Window width", FALSE, FALSE),
 	// ST_WINDOW_HEIGHT
-	StatAttributes("Window height", TRUE, FALSE),
+	StatAttributes("Window height", FALSE, FALSE),
 	// ST_TEX_BAKES
-	StatAttributes("Texture Bakes", TRUE, FALSE),
+	StatAttributes("Texture Bakes", FALSE, FALSE),
 	// ST_TEX_REBAKES
-	StatAttributes("Texture Rebakes", TRUE, FALSE)
+	StatAttributes("Texture Rebakes", FALSE, FALSE)
 };
 
 LLViewerStats::LLViewerStats()
diff --git a/indra/newview/llviewerthrottle.cpp b/indra/newview/llviewerthrottle.cpp
index ceef3bbac5c..4ffdabbbc9c 100644
--- a/indra/newview/llviewerthrottle.cpp
+++ b/indra/newview/llviewerthrottle.cpp
@@ -18,7 +18,11 @@
 
 // consts
 
-const F32 MAX_FRACTIONAL = 1.0f; // was 1.5, which was causing packet loss, reduced to 1.0 - SJB
+// The viewer is allowed to set the under-the-hood bandwidth to 50%
+// greater than the prefs UI shows, under the assumption that the
+// viewer won't receive all the different message types at once.
+// I didn't design this, don't know who did. JC
+const F32 MAX_FRACTIONAL = 1.5f;
 const F32 MIN_FRACTIONAL = 0.2f;
 
 const F32 MIN_BANDWIDTH = 50.f;
diff --git a/indra/newview/llvlcomposition.cpp b/indra/newview/llvlcomposition.cpp
index 2127b92c740..7dd7f2674bc 100644
--- a/indra/newview/llvlcomposition.cpp
+++ b/indra/newview/llvlcomposition.cpp
@@ -250,6 +250,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
 
 	// These have already been validated by generateComposition.
 	U8* st_data[4];
+	S32 st_data_size[4]; // for debugging
 
 	for (S32 i = 0; i < 4; i++)
 	{
@@ -280,6 +281,7 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
 			}
 		}
 		st_data[i] = mRawImages[i]->getData();
+		st_data_size[i] = mRawImages[i]->getDataSize();
 	}
 
 	///////////////////////////////////////
@@ -394,9 +396,18 @@ BOOL LLVLComposition::generateTexture(const F32 x, const F32 y,
 			for (U32 k = 0; k < tex_comps; k++)
 			{
 				// Linearly interpolate based on composition.
-				F32 a = *(st_data[tex0] + st_offset);
-				F32 b = *(st_data[tex1] + st_offset);
-				rawp[ offset ] = (U8)lltrunc( a + composition * (b - a) );
+				if (st_offset >= st_data_size[tex0] || st_offset >= st_data_size[tex1])
+				{
+					// SJB: This shouldn't be happening, but does... Rounding error?
+					//llwarns << "offset 0 [" << tex0 << "] =" << st_offset << " >= size=" << st_data_size[tex0] << llendl;
+					//llwarns << "offset 1 [" << tex1 << "] =" << st_offset << " >= size=" << st_data_size[tex1] << llendl;
+				}
+				else
+				{
+					F32 a = *(st_data[tex0] + st_offset);
+					F32 b = *(st_data[tex1] + st_offset);
+					rawp[ offset ] = (U8)lltrunc( a + composition * (b - a) );
+				}
 				offset++;
 				st_offset++;
 			}
-- 
GitLab