diff --git a/NORSPEC-207.patch b/NORSPEC-207.patch
deleted file mode 100644
index a1c1447bdab6fdb46bd916532862eedb00bc36e0..0000000000000000000000000000000000000000
--- a/NORSPEC-207.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-diff -r fe4bab01522e indra/llprimitive/llrendermaterialtable.cpp
---- a/indra/llprimitive/llrendermaterialtable.cpp	Wed May 15 17:57:21 2013 +0000
-+++ b/indra/llprimitive/llrendermaterialtable.cpp	Wed May 22 14:23:04 2013 -0700
-@@ -184,6 +184,44 @@
- 	}
- }
- 
-+// 'v' is an integer value for 100ths of radians (don't ask...)
-+//
-+void LLRenderMaterialEntry::LLRenderMaterial::setSpecularMapRotation(S32 v) const
-+{
-+	// Store the fact that we're using the new rotation rep
-+	//
-+	m_flags |= kNewSpecularMapRotation;
-+
-+	// Store 'sign bit' in our m_flags
-+	//
-+	m_flags &= ~kSpecularMapRotationNegative;
-+	m_flags |= (specularMapRotation < 0) ? kSpecularMapRotationNegative : 0;
-+
-+	specularRotation = abs(specularRotation);
-+	specularRotation = llmin(specularRotation, MAX_MATERIAL_MAP_ROTATION);
-+
-+	m_specularRotation = (U16)(abs(specularMapRotation));
-+}
-+
-+// 'v' is an integer value for 100ths of radians (don't ask...)
-+//
-+void LLRenderMaterialEntry::LLRenderMaterial::setNormalMapRotation(S32 v) const
-+{
-+
-+	// Store the fact that we're using the new rep for this material
-+	//
-+	m_flags |= kNewNormalMapRotation;
-+
-+	// Store 'sign bit' in our m_flags
-+	//
-+	m_flags &= ~kNormalMapRotationNegative;
-+	m_flags |= (normalMapRotation < 0) ? kNormalMapRotationNegative : 0;
-+
-+	normalRotation = abs(normalRotation);
-+	normalRotation = llmin(normalRotation, MAX_MATERIAL_MAP_ROTATION);
-+
-+	m_normalRotation = (U16)(abs(normalMapRotation));
-+}
- 
- void LLRenderMaterialEntry::LLRenderMaterial::asLLSD( LLSD& dest ) const
- {
-@@ -193,20 +231,45 @@
- 	dest["NormOffsetY"] = (S32)m_normalOffsetY;
- 	dest["NormRepeatX"] = m_normalRepeatX;
- 	dest["NormRepeatY"] = m_normalRepeatY;
--	dest["NormRotation"] = (S32)m_normalRotation;
-+
-+	S32 value = (S32)m_normalMapRotation;
-+
-+	// If we don't have the flag for new rotations set,
-+	// then we need to convert it now
-+	if (!(m_flags & kNewNormalMapRotation))
-+	{
-+		F32 old_radians = ((F32)m_normalMapRotation / 10000.0f)
-+		S32 new_val	    = (S32)(old_radians * 100.0f);
-+		setNormalMapRotation(new_Val);
-+	}
-+
-+	dest["NormRotation"] = (m_flags & kNormalMapRotationNegative) ? -(S32)m_normalRotation : (S32)m_normalRotation;
- 
- 	dest["SpecOffsetX"] = (S32)m_specularOffsetX;
- 	dest["SpecOffsetY"] = (S32)m_specularOffsetY;
- 	dest["SpecRepeatX"] = m_specularRepeatX;
- 	dest["SpecRepeatY"] = m_specularRepeatY;
--	dest["SpecRotation"] = (S32)m_specularRotation;
-+
-+
-+	value = (S32)m_specularRotation;
-+
-+	// If we don't have the flag for new rotations set,
-+	// then we need to convert it now
-+	if (!(m_flags & kNewSpecularMapRotation))
-+	{
-+		F32 old_radians = ((F32)m_specularMapRotation / 10000.0f)
-+		S32 new_val	    = (S32)(old_radians * 100.0f);
-+		setSpecularMapRotation(new_Val);
-+	}
-+
-+	dest["SpecRotation"] = (m_flags & kSpecularMapRotationNegative) ? -(S32)m_specularRotation : (S32)m_specularRotation;
- 
- 	dest["SpecMap"] = m_specularMap;
- 	dest["SpecColor"] = m_specularLightColor.getValue();
- 	dest["SpecExp"] = (S32)m_specularLightExponent;
- 	dest["EnvIntensity"] = (S32)m_environmentIntensity;
- 	dest["AlphaMaskCutoff"] = (S32)m_alphaMaskCutoff;
--	dest["DiffuseAlphaMode"] = (S32)m_diffuseAlphaMode;
-+	dest["DiffuseAlphaMode"] = (S32)(m_diffuseAlphaMode & 0xF);
- 	
- }
- 
-@@ -217,7 +280,10 @@
- 	m_normalOffsetY = (U16)materialDefinition["NormOffsetY"].asInteger();
- 	m_normalRepeatX = materialDefinition["NormRepeatX"].asInteger();
- 	m_normalRepeatY = materialDefinition["NormRepeatY"].asInteger();
--	m_normalRotation = (U16)materialDefinition["NormRotation"].asInteger();
-+
-+	S32 normalRotation = materialDefinition["NormRotation"].asInteger();
-+
-+	setNormalMapRotation(normalRotation);
- 
- 	m_specularMap = materialDefinition["SpecMap"].asUUID();
- 
-@@ -225,7 +291,10 @@
- 	m_specularOffsetY = (U16)materialDefinition["SpecOffsetY"].asInteger();
- 	m_specularRepeatX = materialDefinition["SpecRepeatX"].asInteger();
- 	m_specularRepeatY = materialDefinition["SpecRepeatY"].asInteger();
--	m_specularRotation = (U16)materialDefinition["SpecRotation"].asInteger();
-+
-+	S32 specularRotation = materialDefinition["SpecRotation"].asInteger();
-+
-+	setSpecularMapRotation(specularRotation);
- 
- 	m_specularLightColor.setValue( materialDefinition["SpecColor"] );
- 	m_specularLightExponent = (U8)materialDefinition["SpecExp"].asInteger();
-diff -r fe4bab01522e indra/llprimitive/llrendermaterialtable.h
---- a/indra/llprimitive/llrendermaterialtable.h	Wed May 15 17:57:21 2013 +0000
-+++ b/indra/llprimitive/llrendermaterialtable.h	Wed May 22 14:23:04 2013 -0700
-@@ -89,11 +89,17 @@
- 
- 	void computeID();
- 
-+
- 	struct LLRenderMaterial
- 	{
- 		void asLLSD( LLSD& dest ) const;
- 		void setFromLLSD( const LLSD& materialDefinition );
- 
-+		void setNormalMapRotation(S32 v);
-+		void setSpecularMapRotation(S32 v);
-+
-+		const S32 MAX_MATERIAL_MAP_ROTATION = 62800;
-+
- 		// 36 bytes
- 		LLUUID m_normalMap;
- 		LLUUID m_specularMap;
-@@ -119,7 +125,20 @@
- 		U8 m_specularLightExponent;
- 		U8 m_environmentIntensity;
- 		U8 m_alphaMaskCutoff;
--		U8 m_diffuseAlphaMode;
-+		U8 m_diffuseAlphaMode : 4;
-+		U8 m_flags            : 4;
-+	};
-+
-+	// Flags stored in LLRenderMaterial::m_flags to differentiate 'old' rotation format
-+	// which doesn't handle negative or large rotations correctly from new format.
-+	// All ancient materials will have these flags unset as the values for diffuseAlphaMode
-+	// from which the bits were stolen never used more than the bottom 2 bits.
-+	//
-+	enum RenderMaterialFlags {
-+	 kNewNormalMapRotation 		= 0x1,
-+	 kNewSpecularMapRotation 	= 0x2,
-+	 kNormalMapRotationNegative 	= 0x4,
-+	 kSpecularMapRotationNegative   = 0x8
- 	};
- 
- 	friend struct eastl::hash<LLRenderMaterial>;
diff --git a/indra/llwindow/llopenglview-objc.h b/indra/llwindow/llopenglview-objc.h
index 41837b1eb489ff8427f5386bea59dc9aaee31ab8..1e0e47cd0211afe3a17ceaac859a1693d6e2047b 100644
--- a/indra/llwindow/llopenglview-objc.h
+++ b/indra/llwindow/llopenglview-objc.h
@@ -65,6 +65,7 @@
 - (unsigned long) getVramSize;
 
 - (void) allowMarkedTextInput:(bool)allowed;
+- (void) viewDidEndLiveResize;
 
 @end
 
diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm
index 5f34d03c350aa83b3026b678c4308764acad1a43..7415c9d8dcf3626032f9cb9c8717a2e6d9017e59 100644
--- a/indra/llwindow/llopenglview-objc.mm
+++ b/indra/llwindow/llopenglview-objc.mm
@@ -91,6 +91,13 @@ attributedStringInfo getSegments(NSAttributedString *str)
 
 @implementation LLOpenGLView
 
+// Force a high quality update after live resizing
+- (void) viewDidEndLiveResize
+{
+    NSSize size = [self frame].size;
+    callResize(size.width, size.height);
+}
+
 - (unsigned long)getVramSize
 {
     CGLRendererInfoObj info = 0;
@@ -119,9 +126,8 @@ attributedStringInfo getSegments(NSAttributedString *str)
 
 - (void)windowResized:(NSNotification *)notification;
 {
-	NSSize size = [self frame].size;
-	
-	callResize(size.width, size.height);
+	//NSSize size = [self frame].size;
+	//callResize(size.width, size.height);
 }
 
 - (void)dealloc
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index b26d520557e65c4a0aaa300527a539b2ddaaff02..c151b51c23ba24cc9450256329c0ff8189b13d17 100755
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -857,6 +857,8 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
 			success = false;
 	}
 
+	send_agent_resume();
+
 	// Account for the fact that the app has been stalled.
 	LLFrameTimer::updateFrameTime();
 	return success;
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 836a455a676df788a90e0628803e6837b5dad57b..2c3b34e128b191fdbbf05ff186d58d88336eecd7 100755
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -1609,7 +1609,7 @@ LLConversationItem* LLFloaterIMContainer::addConversationListItem(const LLUUID&
 
 	// Create the participants widgets now
 	// Note: usually, we do not get an updated avatar list at that point
-	if (uuid.isNull() || im_sessionp && !im_sessionp->isP2PSessionType())
+	if (uuid.isNull() || (im_sessionp && !im_sessionp->isP2PSessionType()))
 	{
 		LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = item->getChildrenBegin();
 		LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = item->getChildrenEnd();
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index 47a8a04b6396f1703e6143c57748fda051304b91..2fbb3bf8688f2c968dfbdbb9dfb3c74809e046e3 100755
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -534,6 +534,11 @@ void stop_moving( EKeystate s )
 
 void start_chat( EKeystate s )
 {
+    if (LLAppViewer::instance()->quitRequested())
+    {
+        return; // can't talk, gotta go, kthxbye!
+    }
+    
 	// start chat
 	LLFloaterIMNearbyChat::startChat(NULL);
 }
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 4445539ac2e1cea804797d20d47348bda8ff6814..e00d22023aa38c8d87345887a2d6fa21be850e4f 100755
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -958,11 +958,13 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 			screenFormat = GL_RGBA12;
 		}
 
+#if !LL_DARWIN
 		if (gGLManager.mGLVersion < 4.f && gGLManager.mIsNVIDIA)
 		{
 			screenFormat = GL_RGBA16F_ARB;
 		}
-		
+#endif
+        
 		if (!mScreen.allocate(resX, resY, screenFormat, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
 		if (samples > 0)
 		{