diff --git a/.hgtags b/.hgtags
index 0ca253984cbf8ca66f9815c9f6751c3a9e02ef96..3d09a1e8437ca009722a6d0eba18ac882b380588 100644
--- a/.hgtags
+++ b/.hgtags
@@ -414,3 +414,8 @@ a676b4d6c037b39fe5b8e42cf8839a9303936089 DRTVWR-289
 28fa8b944a0c1869636ab00cc400f5aa71f6fa3c DRTVWR-290
 7f09bbc28c297f14b67961be7b6575445fa160e8 DRTVWR-291
 b23419a2748483c98f3b84b630468a21c88feba5 DRTVWR-292
+1567de5700c273b583dac41b64275c223287306e 3.4.5-beta4
+1cce8447f8f574673e3f47d6fe584262e6964fe2 DRTVWR-296
+0a5d409161ef2a89b28c9a741051dd2dedc707d6 DRTVWR-297
+852b69ef0b5fe6b13b69cc2217282cc64de6afab 3.4.5-beta5
+a49c715243a36a8a380504d14cb7416b3039c956 3.4.5-release
diff --git a/autobuild.xml b/autobuild.xml
index 11c2da52dc25642bda3b04818f32043b2749004a..4b05f5c05c59c61b42f63c01ae0a5cbce91a857d 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -186,9 +186,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>ac37d0038c91b0672fa31a02731f0eac</string>
+              <string>06dd7af75e1eb179aed54fd58d8688af</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Darwin/installer/boost-1.52.0-darwin-20121218.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/Darwin/installer/boost-1.52.0-darwin-20130221.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -198,9 +198,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>146ed8a8c2ef8ab3f0a6c4f214fc5c22</string>
+              <string>50c8b50b7cced52cc5656fb44e9b12cf</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Linux/installer/boost-1.52.0-linux-20121218.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/Linux/installer/boost-1.52.0-linux-20130222.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -210,9 +210,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>3ea60f17d986b7e8a3351298734bdca4</string>
+              <string>742fc9675b033df7f9c6f215ff250f6c</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/CYGWIN/installer/boost-1.52.0-windows-20121218.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/CYGWIN/installer/boost-1.52.0-windows-20130221.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 10d6818bd38a3ca23a8c6135ba4b0281272e65d6..e86ef11a72bd58e85621a2482f45d812f8afe0df 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1251,6 +1251,7 @@ Whimsy Winx
 Whirly Fizzle
 	STORM-1895
 	MAINT-873
+	STORM-1930
 Whoops Babii
 	VWR-631
 	VWR-1640
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 452fd5f35602e259915acab77a068d1bd6e16be4..084ba7ea982323d3cd762882e5868e261edfe717 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -192,12 +192,7 @@ endif (LINUX)
 
 
 if (DARWIN)
-  # NOTE (per http://lists.apple.com/archives/darwin-dev/2008/Jan/msg00232.html):
-  # > Why the bus error? What am I doing wrong? 
-  # This is a known issue where getcontext(3) is writing past the end of the
-  # ucontext_t struct when _XOPEN_SOURCE is not defined (rdar://problem/5578699 ).
-  # As a workaround, define _XOPEN_SOURCE before including ucontext.h.
-  add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE)
+  add_definitions(-DLL_DARWIN=1)
   set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
   set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
   set(DARWIN_extra_cstar_flags "-mlong-branch -g")
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 1acb2bbbfdfb3650cc66809d01a315e2816fec25..cff762e1f024cb447e68d40e4151253b4640a86d 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -7,11 +7,12 @@ set(Boost_FIND_REQUIRED ON)
 if (STANDALONE)
   include(FindBoost)
 
+  set(BOOST_CONTEXT_LIBRARY boost_context-mt)
+  set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
   set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
   set(BOOST_REGEX_LIBRARY boost_regex-mt)
   set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
   set(BOOST_SYSTEM_LIBRARY boost_system-mt)
-  set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
   set(BOOST_THREAD_LIBRARY boost_thread-mt)
 else (STANDALONE)
   use_prebuilt_binary(boost)
@@ -20,6 +21,12 @@ else (STANDALONE)
 
   if (WINDOWS)
     if(MSVC80)
+      set(BOOST_CONTEXT_LIBRARY 
+          optimized libboost_context-vc80-mt-${BOOST_VERSION}
+          debug libboost_context-vc80-mt-gd-${BOOST_VERSION})
+      set(BOOST_FILESYSTEM_LIBRARY 
+          optimized libboost_filesystem-vc80-mt-${BOOST_VERSION}
+          debug libboost_filesystem-vc80-mt-gd-${BOOST_VERSION})
       set(BOOST_PROGRAM_OPTIONS_LIBRARY 
           optimized libboost_program_options-vc80-mt-${BOOST_VERSION}
           debug libboost_program_options-vc80-mt-gd-${BOOST_VERSION})
@@ -32,59 +39,74 @@ else (STANDALONE)
       set(BOOST_SYSTEM_LIBRARY 
           optimized libboost_system-vc80-mt-${BOOST_VERSION}
           debug libboost_system-vc80-mt-gd-${BOOST_VERSION})
-      set(BOOST_FILESYSTEM_LIBRARY 
-          optimized libboost_filesystem-vc80-mt-${BOOST_VERSION}
-          debug libboost_filesystem-vc80-mt-gd-${BOOST_VERSION})
+      set(BOOST_THREAD_LIBRARY 
+          optimized libboost_thread-vc80-mt-${BOOST_VERSION}
+          debug libboost_thread-vc80-mt-gd-${BOOST_VERSION})
     else(MSVC80)
       # MSVC 10.0 config
+      set(BOOST_CONTEXT_LIBRARY 
+          optimized libboost_context-mt
+          debug libboost_context-mt-gd)
+      set(BOOST_FILESYSTEM_LIBRARY 
+          optimized libboost_filesystem-mt
+          debug libboost_filesystem-mt-gd)
       set(BOOST_PROGRAM_OPTIONS_LIBRARY 
           optimized libboost_program_options-mt
           debug libboost_program_options-mt-gd)
       set(BOOST_REGEX_LIBRARY
           optimized libboost_regex-mt
           debug libboost_regex-mt-gd)
+      set(BOOST_SIGNALS_LIBRARY 
+          optimized libboost_signals-mt
+          debug libboost_signals-mt-gd)
       set(BOOST_SYSTEM_LIBRARY 
           optimized libboost_system-mt
           debug libboost_system-mt-gd)
-      set(BOOST_FILESYSTEM_LIBRARY 
-          optimized libboost_filesystem-mt
-          debug libboost_filesystem-mt-gd)
       set(BOOST_THREAD_LIBRARY 
           optimized libboost_thread-mt
           debug libboost_thread-mt-gd)
     endif (MSVC80)
   elseif (LINUX)
+    set(BOOST_CONTEXT_LIBRARY
+        optimized boost_context-mt
+        debug boost_context-mt-d)
+    set(BOOST_FILESYSTEM_LIBRARY
+        optimized boost_filesystem-mt
+        debug boost_filesystem-mt-d)
     set(BOOST_PROGRAM_OPTIONS_LIBRARY
         optimized boost_program_options-mt
         debug boost_program_options-mt-d)
     set(BOOST_REGEX_LIBRARY
         optimized boost_regex-mt
         debug boost_regex-mt-d)
+    set(BOOST_SIGNALS_LIBRARY
+        optimized boost_signals-mt
+        debug boost_signals-mt-d)
     set(BOOST_SYSTEM_LIBRARY
         optimized boost_system-mt
         debug boost_system-mt-d)
-    set(BOOST_FILESYSTEM_LIBRARY
-        optimized boost_filesystem-mt
-        debug boost_filesystem-mt-d)
     set(BOOST_THREAD_LIBRARY
         optimized boost_thread-mt
         debug boost_thread-mt-d)
   elseif (DARWIN)
-    set(BOOST_PROGRAM_OPTIONS_LIBRARY
-        optimized boost_program_options-mt
-        debug boost_program_options-mt-d)
+    set(BOOST_CONTEXT_LIBRARY
+        optimized boost_context-mt
+        debug boost_context-mt-d)
+    set(BOOST_FILESYSTEM_LIBRARY
+        optimized boost_filesystem-mt
+        debug boost_filesystem-mt-d)
     set(BOOST_PROGRAM_OPTIONS_LIBRARY
         optimized boost_program_options-mt
         debug boost_program_options-mt-d)
     set(BOOST_REGEX_LIBRARY
         optimized boost_regex-mt
         debug boost_regex-mt-d)
+    set(BOOST_SIGNALS_LIBRARY
+        optimized boost_signals-mt
+        debug boost_signals-mt-d)
     set(BOOST_SYSTEM_LIBRARY
         optimized boost_system-mt
         debug boost_system-mt-d)
-    set(BOOST_FILESYSTEM_LIBRARY
-        optimized boost_filesystem-mt
-        debug boost_filesystem-mt-d)
     set(BOOST_THREAD_LIBRARY
         optimized boost_thread-mt
         debug boost_thread-mt-d)
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index c32e357da3dc9714fa048a03ebc8fdb0777fda30..8457cf5359e76c71602fa289fd2301630f1c2326 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -254,12 +254,13 @@ elseif(LINUX)
         libapr-1.so.0
         libaprutil-1.so.0
         libatk-1.0.so
+        libboost_context-mt.so.${BOOST_VERSION}.0
+        libboost_filesystem-mt.so.${BOOST_VERSION}.0
         libboost_program_options-mt.so.${BOOST_VERSION}.0
         libboost_regex-mt.so.${BOOST_VERSION}.0
-        libboost_thread-mt.so.${BOOST_VERSION}.0
-        libboost_filesystem-mt.so.${BOOST_VERSION}.0
         libboost_signals-mt.so.${BOOST_VERSION}.0
         libboost_system-mt.so.${BOOST_VERSION}.0
+        libboost_thread-mt.so.${BOOST_VERSION}.0
         libbreakpad_client.so.0
         libcollada14dom.so
         libcrypto.so.1.0.0
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 4b459f1a486195758e3caf1a4f9917c7ef66e276..e2528ea7d52dea8e27a080a84a97c25a45279bfa 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -104,15 +104,20 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
     OUTPUT_VARIABLE XCODE_VERSION )
 
   # To support a different SDK update these Xcode settings:
+  if (XCODE_VERSION GREATER 4.5)
+    set(CMAKE_OSX_DEPLOYMENT_TARGET 10.8)
+    set(CMAKE_OSX_SYSROOT macosx10.8)
+  else (XCODE_VERSION GREATER 4.5)
   if (XCODE_VERSION GREATER 4.2)
     set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
+    set(CMAKE_OSX_SYSROOT macosx10.6)
   else (XCODE_VERSION GREATER 4.2)
     set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
+    set(CMAKE_OSX_SYSROOT macosx10.6)
   endif (XCODE_VERSION GREATER 4.2)
+  endif (XCODE_VERSION GREATER 4.5)
 
-  set(CMAKE_OSX_SYSROOT macosx10.6)
   set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
-      
   set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
 
   # NOTE: To attempt an i386/PPC Universal build, add this on the configure line:
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
index 0b5829eb7ee00821b55b02fbdb6c32f9e48406d9..912270430602f0eddaec965b2732bc6375c5ff62 100644
--- a/indra/llcommon/llcoros.cpp
+++ b/indra/llcommon/llcoros.cpp
@@ -115,7 +115,7 @@ std::string LLCoros::getNameByID(const void* self_id) const
     // passed to us comes.
     for (CoroMap::const_iterator mi(mCoros.begin()), mend(mCoros.end()); mi != mend; ++mi)
     {
-        namespace coro_private = boost::coroutines::detail;
+        namespace coro_private = boost::dcoroutines::detail;
         if (static_cast<void*>(coro_private::coroutine_accessor::get_impl(const_cast<coro&>(*mi->second)).get())
             == self_id)
         {
diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h
index d75f28ec1a5de4eaf43a5058386369d536b3bb4d..03df406b688d8665a67394432f6c11cfa1f8de1c 100644
--- a/indra/llcommon/llcoros.h
+++ b/indra/llcommon/llcoros.h
@@ -29,7 +29,7 @@
 #if ! defined(LL_LLCOROS_H)
 #define LL_LLCOROS_H
 
-#include <boost/coroutine/coroutine.hpp>
+#include <boost/dcoroutine/coroutine.hpp>
 #include "llsingleton.h"
 #include <boost/ptr_container/ptr_map.hpp>
 #include <string>
@@ -78,8 +78,8 @@
 class LL_COMMON_API LLCoros: public LLSingleton<LLCoros>
 {
 public:
-    /// Canonical boost::coroutines::coroutine signature we use
-    typedef boost::coroutines::coroutine<void()> coro;
+    /// Canonical boost::dcoroutines::coroutine signature we use
+    typedef boost::dcoroutines::coroutine<void()> coro;
     /// Canonical 'self' type
     typedef coro::self self;
 
diff --git a/indra/llcommon/lleventcoro.h b/indra/llcommon/lleventcoro.h
index 88a5e6ec74c639310b69ca86cdb3ba211c8519c6..a42af63b650fdb6b697ea53a1ac93e28ec5184aa 100644
--- a/indra/llcommon/lleventcoro.h
+++ b/indra/llcommon/lleventcoro.h
@@ -29,8 +29,8 @@
 #if ! defined(LL_LLEVENTCORO_H)
 #define LL_LLEVENTCORO_H
 
-#include <boost/coroutine/coroutine.hpp>
-#include <boost/coroutine/future.hpp>
+#include <boost/dcoroutine/coroutine.hpp>
+#include <boost/dcoroutine/future.hpp>
 #include <boost/optional.hpp>
 #include <string>
 #include <stdexcept>
@@ -206,13 +206,13 @@ LLSD postAndWait(SELF& self, const LLSD& event, const LLEventPumpOrPumpName& req
                  const LLEventPumpOrPumpName& replyPump, const LLSD& replyPumpNamePath=LLSD())
 {
     // declare the future
-    boost::coroutines::future<LLSD> future(self);
+    boost::dcoroutines::future<LLSD> future(self);
     // make a callback that will assign a value to the future, and listen on
     // the specified LLEventPump with that callback
     std::string listenerName(LLEventDetail::listenerNameForCoro(self));
     LLTempBoundListener connection(
         replyPump.getPump().listen(listenerName,
-                                   voidlistener(boost::coroutines::make_callback(future))));
+                                   voidlistener(boost::dcoroutines::make_callback(future))));
     // skip the "post" part if requestPump is default-constructed
     if (requestPump)
     {
@@ -257,7 +257,7 @@ namespace LLEventDetail
      * This helper is specifically for the two-pump version of waitForEventOn().
      * We use a single future object, but we want to listen on two pumps with it.
      * Since we must still adapt from (the callable constructed by)
-     * boost::coroutines::make_callback() (void return) to provide an event
+     * boost::dcoroutines::make_callback() (void return) to provide an event
      * listener (bool return), we've adapted LLVoidListener for the purpose. The
      * basic idea is that we construct a distinct instance of WaitForEventOnHelper
      * -- binding different instance data -- for each of the pumps. Then, when a
@@ -331,16 +331,16 @@ LLEventWithID postAndWait2(SELF& self, const LLSD& event,
                            const LLSD& replyPump1NamePath=LLSD())
 {
     // declare the future
-    boost::coroutines::future<LLEventWithID> future(self);
+    boost::dcoroutines::future<LLEventWithID> future(self);
     // either callback will assign a value to this future; listen on
     // each specified LLEventPump with a callback
     std::string name(LLEventDetail::listenerNameForCoro(self));
     LLTempBoundListener connection0(
         replyPump0.getPump().listen(name + "a",
-                               LLEventDetail::wfeoh(boost::coroutines::make_callback(future), 0)));
+                               LLEventDetail::wfeoh(boost::dcoroutines::make_callback(future), 0)));
     LLTempBoundListener connection1(
         replyPump1.getPump().listen(name + "b",
-                               LLEventDetail::wfeoh(boost::coroutines::make_callback(future), 1)));
+                               LLEventDetail::wfeoh(boost::dcoroutines::make_callback(future), 1)));
     // skip the "post" part if requestPump is default-constructed
     if (requestPump)
     {
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 2a8eea88b6f25b10b28c1e6af4e8a34de5aaabc6..0a68fe2e3bf18b0eb9e3b0da395dec4460609f62 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -73,6 +73,12 @@ using namespace llsd;
 #	include <mach/mach_host.h>
 #	include <mach/task.h>
 #	include <mach/task_info.h>
+
+// disable warnings about Gestalt calls being deprecated
+// until Apple get's on the ball and provides an alternative
+//
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
 #elif LL_LINUX
 #	include <errno.h>
 #	include <sys/utsname.h>
@@ -1394,3 +1400,10 @@ BOOL gzip_file(const std::string& srcfile, const std::string& dstfile)
 	if (dst != NULL) gzclose(dst);
 	return retval;
 }
+
+#if LL_DARWIN
+// disable warnings about Gestalt calls being deprecated
+// until Apple get's on the ball and provides an alternative
+//
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
diff --git a/indra/llcommon/tests/lleventcoro_test.cpp b/indra/llcommon/tests/lleventcoro_test.cpp
index 901ba35b2f08421aff9000002f0fd9c19640b00e..8d12529613e0fe0a525a69cbca77845ffb810f7d 100644
--- a/indra/llcommon/tests/lleventcoro_test.cpp
+++ b/indra/llcommon/tests/lleventcoro_test.cpp
@@ -64,10 +64,10 @@
 // Boost.Coroutine #include is the *first* #include of the platform header.
 // That means that client code must generally #include Boost.Coroutine headers
 // before anything else.
-#include <boost/coroutine/coroutine.hpp>
+#include <boost/dcoroutine/coroutine.hpp>
 // Normally, lleventcoro.h obviates future.hpp. We only include this because
 // we implement a "by hand" test of future functionality.
-#include <boost/coroutine/future.hpp>
+#include <boost/dcoroutine/future.hpp>
 #include <boost/bind.hpp>
 #include <boost/range.hpp>
 
@@ -87,7 +87,7 @@
 /*****************************************************************************
 *   from the banana.cpp example program borrowed for test<1>()
 *****************************************************************************/
-namespace coroutines = boost::coroutines;
+namespace coroutines = boost::dcoroutines;
 using coroutines::coroutine;
 
 template<typename Iter>
@@ -122,7 +122,7 @@ typedef coroutine<std::string::iterator(void)> match_coroutine_type;
 *   Test helpers
 *****************************************************************************/
 // I suspect this will be typical of coroutines used in Linden software
-typedef boost::coroutines::coroutine<void()> coroutine_type;
+typedef boost::dcoroutines::coroutine<void()> coroutine_type;
 
 /// Simulate an event API whose response is immediate: sent on receipt of the
 /// initial request, rather than after some delay. This is the case that
@@ -173,10 +173,10 @@ namespace tut
                 // ... do whatever preliminary stuff must happen ...
 
                 // declare the future
-                boost::coroutines::future<LLSD> future(self);
+                boost::dcoroutines::future<LLSD> future(self);
                 // tell the future what to wait for
                 LLTempBoundListener connection(
-                    LLEventPumps::instance().obtain("source").listen("coro", voidlistener(boost::coroutines::make_callback(future))));
+                    LLEventPumps::instance().obtain("source").listen("coro", voidlistener(boost::dcoroutines::make_callback(future))));
                 ensure("Not yet", ! future);
                 // attempting to dereference ("resolve") the future causes the calling
                 // coroutine to wait for it
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 509de51f4dfc4261ab7c22cf47cb817288dbd189..dcac5e897b0d9509bcead874b2907067c22430e3 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -993,12 +993,7 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
 }
 #endif
 
-#if __MAC_OS_X_VERSION_MAX_ALLOWED <= 1070
 #include <OpenGL/gl.h>
-#else
-#include <AGL/gl.h>
-#endif
-
 
 #endif // LL_MESA / LL_WINDOWS / LL_DARWIN
 
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index c1b96a43da4439b5cc47a796174db2e215d9981f..d2fd8345dd94fcce9143a7589aad409f0fb717bf 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -244,12 +244,15 @@ bool LLRenderTarget::addColorAttachment(U32 color_fmt)
 	mTex.push_back(tex);
 	mInternalFormat.push_back(color_fmt);
 
+#if !LL_DARWIN
 	if (gDebugGL)
 	{ //bind and unbind to validate target
 		bindTarget();
 		flush();
 	}
-
+#endif
+    
+    
 	return true;
 }
 
diff --git a/indra/mac_updater/mac_updater.cpp b/indra/mac_updater/mac_updater.cpp
index aa45c5d23f25e685ba6f2a352e53cfa13aec0836..f533d47b18574932d8523d7fbc5c28fa59e56450 100644
--- a/indra/mac_updater/mac_updater.cpp
+++ b/indra/mac_updater/mac_updater.cpp
@@ -47,6 +47,11 @@
 
 #include "llerrorcontrol.h"
 
+#if LL_DARWIN
+// FSPathMakeRef, FSObjectCopy, deprecations...
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+
 enum
 {
 	kEventClassCustom = 'Cust',
@@ -1255,3 +1260,7 @@ void *updatethreadproc(void*)
 	
 	return(NULL);
 }
+
+#if LL_DARWIN
+#pragma GCC diagnostic warning "-Wdeprecated-declarations"
+#endif
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
index 24328202cb11c30cb64a52e906593e801e3aa74d..2dd97a9ba751edad9dc67d30d3ab9117a5a9ffa8 100644
--- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
+++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
@@ -232,12 +232,8 @@ class MediaPluginQuickTime : public MediaPluginBase
 			mMovieHandle = NULL;
 		};
 
-		if ( mGWorldHandle )
-		{
-			DisposeGWorld( mGWorldHandle );
-			mGWorldHandle = NULL;
-		};
-
+        mGWorldHandle = NULL;
+        
 		setStatus(STATUS_NONE);
 
 		return true;
@@ -273,6 +269,7 @@ class MediaPluginQuickTime : public MediaPluginBase
 				//std::cerr << "<--- Sending size change request to application with name: " << mTextureSegmentName << " - size is " << width << " x " << height << std::endl;
 			}
 		}
+        
 
 		// sanitize destination size
 		Rect dest_rect = rectFromSize(mWidth, mHeight);
@@ -281,12 +278,10 @@ class MediaPluginQuickTime : public MediaPluginBase
 		int depth_bits = mDepth * 8;
 		long rowbytes = mDepth * mTextureWidth;
 
-		GWorldPtr old_gworld_handle = mGWorldHandle;
-
 		if(mPixels != NULL)
 		{
 			// We have pixels.  Set up a GWorld pointing at the texture.
-			OSErr result = NewGWorldFromPtr( &mGWorldHandle, depth_bits, &dest_rect, NULL, NULL, 0, (Ptr)mPixels, rowbytes);
+			OSErr result = QTNewGWorldFromPtr( &mGWorldHandle, depth_bits, &dest_rect, NULL, NULL, 0, (Ptr)mPixels, rowbytes);
 			if ( noErr != result )
 			{
 				// TODO: unrecoverable??  throw exception?  return something?
@@ -297,7 +292,7 @@ class MediaPluginQuickTime : public MediaPluginBase
 		{
 			// We don't have pixels. Create a fake GWorld we can point the movie at when it's not safe to render normally.
 			Rect tempRect = rectFromSize(1, 1);
-			OSErr result = NewGWorld( &mGWorldHandle, depth_bits, &tempRect, NULL, NULL, 0);
+			OSErr result = QTNewGWorld( &mGWorldHandle, depth_bits, &tempRect, NULL, NULL, 0);
 			if ( noErr != result )
 			{
 				// TODO: unrecoverable??  throw exception?  return something?
@@ -305,14 +300,8 @@ class MediaPluginQuickTime : public MediaPluginBase
 			}
 		}
 
-		SetMovieGWorld( mMovieHandle, mGWorldHandle, GetGWorldDevice( mGWorldHandle ) );
-
-		// If the GWorld was already set up, delete it.
-		if(old_gworld_handle != NULL)
-		{
-			DisposeGWorld( old_gworld_handle );
-		}
-
+		SetMovieGWorld( mMovieHandle, mGWorldHandle, NULL );
+        
 		// Set up the movie display matrix
 		{
 			// scale movie to fit rect and invert vertically to match opengl image format
@@ -579,28 +568,7 @@ class MediaPluginQuickTime : public MediaPluginBase
 		}
 
 	};
-
-	int getDataWidth() const
-	{
-		if ( mGWorldHandle )
-		{
-			int depth = mDepth;
-
-			if (depth < 1)
-				depth = 1;
-
-			// ALWAYS use the row bytes from the PixMap if we have a GWorld because
-			// sometimes it's not the same as mMediaDepth * mMediaWidth !
-			PixMapHandle pix_map_handle = GetGWorldPixMap( mGWorldHandle );
-			return QTGetPixMapHandleRowBytes( pix_map_handle ) / depth;
-		}
-		else
-		{
-			// TODO :   return LLMediaImplCommon::getaDataWidth();
-			return 0;
-		}
-	};
-
+    
 	void seek( F64 time )
 	{
 		if ( mMovieController )
diff --git a/indra/media_plugins/webkit/mac_volume_catcher.cpp b/indra/media_plugins/webkit/mac_volume_catcher.cpp
index 2f3f2211a38a6c3120b862b21ba6bd7477af7cbf..cc94556413dc2b090033e973831ddaf2f8573701 100644
--- a/indra/media_plugins/webkit/mac_volume_catcher.cpp
+++ b/indra/media_plugins/webkit/mac_volume_catcher.cpp
@@ -38,6 +38,10 @@
 #include <QuickTime/QuickTime.h>
 #include <AudioUnit/AudioUnit.h>
 
+#if LL_DARWIN
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
+
 struct VolumeCatcherStorage;
 
 class VolumeCatcherImpl
@@ -265,3 +269,6 @@ void VolumeCatcher::pump()
 	// No periodic tasks are necessary for this implementation.
 }
 
+#if LL_DARWIN
+#pragma GCC diagnostic warning "-Wdeprecated-declarations"
+#endif
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 75323f49458fb2a62a4db8de8837f0fd5a009d7a..84ae0933b4add92fe86c1bac40ce601eb37c1db5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1829,6 +1829,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
     ${viewer_LIBRARIES}
     ${BOOST_PROGRAM_OPTIONS_LIBRARY}
     ${BOOST_REGEX_LIBRARY}
+    ${BOOST_CONTEXT_LIBRARY}
     ${DBUSGLIB_LIBRARIES}
     ${OPENGL_LIBRARIES}
     ${FMODWRAPPER_LIBRARY} # must come after LLAudio
diff --git a/indra/newview/llfilepicker_mac.mm b/indra/newview/llfilepicker_mac.mm
index 13d0caeb9f935d3e334c211437d75d5586b5ebcf..d8862bce579082176098c804f0fa89c56a0f2019 100644
--- a/indra/newview/llfilepicker_mac.mm
+++ b/indra/newview/llfilepicker_mac.mm
@@ -66,19 +66,21 @@ std::vector<std::string>* doLoadDialog(const std::vector<std::string>* allowed_t
     
     if (fileTypes)
     {
-
         [panel setAllowedFileTypes:fileTypes];
-    
-        result = [panel runModalForTypes:fileTypes];
+        result = [panel runModal];
     }
     else 
     {
-        result = [panel runModalForDirectory:NSHomeDirectory() file:nil];
+        // I suggest it's better to open the last path and let this default to home dir as necessary
+        // for consistency with other OS X apps
+        //
+        //[panel setDirectoryURL: fileURLWithPath(NSHomeDirectory()) ];
+        result = [panel runModal];
     }
     
     if (result == NSOKButton) 
     {
-        NSArray *filesToOpen = [panel filenames];
+        NSArray *filesToOpen = [panel URLs];
         int i, count = [filesToOpen count];
         
         if (count > 0)
@@ -114,11 +116,14 @@ std::string* doSaveDialog(const std::string* file,
     NSString *fileName = [NSString stringWithCString:file->c_str() encoding:[NSString defaultCStringEncoding]];
     
     std::string *outfile = NULL;
-    
-    if([panel runModalForDirectory:nil file:fileName] == 
+    NSURL* url = [NSURL fileURLWithPath:fileName];
+    [panel setDirectoryURL: url];
+    if([panel runModal] == 
        NSFileHandlingPanelOKButton) 
-    { 
-        outfile= new std::string( [ [panel filename] UTF8String ] );
+    {
+        NSURL* url = [panel URL];
+        NSString* p = [url path];
+        outfile = new std::string( [p UTF8String] );
         // write the file 
     } 
     return outfile;
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 09003e3e536885479b0f10dd1a4f4757857925f4..1223615079772e274ff703f6ea17e85964ca2c5f 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -215,17 +215,19 @@ class LLMeshHeaderResponder : public LLCurl::Responder
 
 	~LLMeshHeaderResponder()
 	{
-		if (!mProcessed && !LLApp::isQuitting())
-		{ //something went wrong, retry
-			llwarns << "Timeout or service unavailable, retrying." << llendl;
-			LLMeshRepository::sHTTPRetryCount++;
-			LLMeshRepoThread::HeaderRequest req(mMeshParams);
-			LLMutexLock lock(gMeshRepo.mThread->mMutex);
-			gMeshRepo.mThread->mHeaderReqQ.push(req);
+		if (!LLApp::isQuitting())
+		{
+			if (!mProcessed)
+			{ //something went wrong, retry
+				llwarns << "Timeout or service unavailable, retrying." << llendl;
+				LLMeshRepository::sHTTPRetryCount++;
+				LLMeshRepoThread::HeaderRequest req(mMeshParams);
+				LLMutexLock lock(gMeshRepo.mThread->mMutex);
+				gMeshRepo.mThread->mHeaderReqQ.push(req);
+			}
 
+			LLMeshRepoThread::decActiveHeaderRequests();
 		}
-
-		LLMeshRepoThread::decActiveHeaderRequests();
 	}
 
 	virtual void completedRaw(U32 status, const std::string& reason,
@@ -252,13 +254,16 @@ class LLMeshLODResponder : public LLCurl::Responder
 
 	~LLMeshLODResponder()
 	{
-		if (!mProcessed && !LLApp::isQuitting())
+		if (!LLApp::isQuitting())
 		{
-			llwarns << "Killed without being processed, retrying." << llendl;
-			LLMeshRepository::sHTTPRetryCount++;
-			gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
+			if (!mProcessed)
+			{
+				llwarns << "Killed without being processed, retrying." << llendl;
+				LLMeshRepository::sHTTPRetryCount++;
+				gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
+			}
+			LLMeshRepoThread::decActiveLODRequests();
 		}
-		LLMeshRepoThread::decActiveLODRequests();
 	}
 
 	virtual void completedRaw(U32 status, const std::string& reason,
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index 0316f7997345be5022544791910ad6ee13feae07..a565005f302c5368ee555c676f75429ecbaf49db 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -33,8 +33,6 @@
 // in viewer.
 // It is used to precompile headers for improved build speed.
 
-#include <boost/coroutine/coroutine.hpp>
-
 #include "linden_common.h"
 
 // Work around stupid Microsoft STL warning
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 7eb0fac2beb11dfe9bfaa6c976902821047c5983..cd243d40a4e653ddd8aa3fe035a755abb6f9ad56 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -147,11 +147,24 @@
      height="12"
      layout="topleft"
      left_delta="87"
-     name="ShadersPrefText3"
+     name="ShadersPrefText2"
      top_delta="0"
      width="80">
         Mid
     </text>
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     halign="center"
+     height="12"
+     layout="topleft"
+     left_delta="87"
+     name="ShadersPrefText3"
+     top_delta="0"
+     width="80">
+        High
+    </text>
     <text
      type="string"
      length="1"
diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt
index 7720619df3017a718a3ba393f086fbb67d8db768..1139fecd16f3f204f891c3bbee49e3b6035233ec 100644
--- a/indra/viewer_components/login/CMakeLists.txt
+++ b/indra/viewer_components/login/CMakeLists.txt
@@ -9,6 +9,7 @@ endif(LL_TESTS)
 include(LLCommon)
 include(LLMath)
 include(LLXML)
+include(Boost)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
@@ -40,12 +41,18 @@ target_link_libraries(lllogin
     ${LLCOMMON_LIBRARIES}
     ${LLMATH_LIBRARIES}
     ${LLXML_LIBRARIES}
+    ${BOOST_CONTEXT_LIBRARY}
     )
 
 if(LL_TESTS)
   SET(lllogin_TEST_SOURCE_FILES
       lllogin.cpp
       )
+  set_source_files_properties(
+    lllogin.cpp
+    PROPERTIES
+    LL_TEST_ADDITIONAL_LIBRARIES "${BOOST_CONTEXT_LIBRARY}"
+    )
 
   LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}")
 endif(LL_TESTS)
diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp
index bdcb068200768a17abbfc89c25d5d47fa80bb4de..3357ad812d8c771babc2633681884c4d62e8939a 100644
--- a/indra/viewer_components/login/lllogin.cpp
+++ b/indra/viewer_components/login/lllogin.cpp
@@ -23,7 +23,6 @@
  * $/LicenseInfo$
  */
 
-#include <boost/coroutine/coroutine.hpp>
 #include "linden_common.h"
 #include "llsd.h"
 #include "llsdutil.h"
diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp
index 5edbbf9914cbfb7ae52f17f24cade54377e8ba91..aa7bb72e6d98593694ff90edf1c1c342247e07e8 100644
--- a/indra/viewer_components/updater/llupdatechecker.cpp
+++ b/indra/viewer_components/updater/llupdatechecker.cpp
@@ -144,18 +144,7 @@ std::string LLUpdateChecker::Implementation::buildUrl(std::string const & protoc
 #ifdef LL_WINDOWS
 	static const char * platform = "win";
 #elif LL_DARWIN
-    long versMin;
-    Gestalt(gestaltSystemVersionMinor, &versMin);
-    
-    static const char *platform;
-    if (versMin == 5) //OS 10.5
-    {
-        platform = "mac_legacy";
-    }
-    else 
-    {
-        platform = "mac";
-    }
+    static const char * platform = "mac";
 #else
 	static const char * platform = "lnx";
 #endif